`
dato0123
  • 浏览: 914029 次
文章分类
社区版块
存档分类
最新评论

Singleton学习笔记

 
阅读更多

单例模式的类图还是比较简单,自己管理自己的实例,看一下类图


用到的单例的地方还是比较多的,比如在手机游戏开发中,背景音乐的管理就可以设置成一个单例,只要设置成为静音,不管在游戏中如何切换都是静音的


单例模式的三个基本要素是:私有构造器+私有静态成员变量+全局静态方法


而传统的延迟加载在多线程的应用中很容易出现问题,会产生多个对象,造成一些莫名其妙的问题,传统的延迟加载的代码如下:


而解决线程完全的方法有三种:

1、方法加同步:


2、采用积极加载的方式:


3、双重加锁检测:


总地来说单例模式还是比较简单的,要注意一点的是产生单例模式的方法要处理一下,适应多线程的情况。


分享到:
评论

相关推荐

    java学习笔记 初学者必读

    7.5. Singleton模式 7-22 7.6. final关键字 7-22 7.6.1. final变量不能被改变; 7-22 7.6.2. final方法不能被改写; 7-23 7.6.3. final类不能被继承; 7-23 7.6.4. String 类 7-23 7.7. 抽象类 7-24 7.8. 接口 (模板...

    net学习笔记及其他代码应用

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,...

    java学习笔记

    1、Singleton单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 1)解决的问题:如何只让设计的类只能创建一个对象 如何实现:饿汉式 & 懒汉式 A)饿汉式实现:安全 如Runtime()

    java8stream源码-Learning-Note:学习笔记持续更新

    SingleTon{ private static SingleTon INSTANCE = null; private SingleTon(){} public static SingleTon getInstance() { if(INSTANCE == null){ INSTANCE = new SingleTon(); } return INSTANCE; } } //懒汉模式...

    springboot学习思维笔记.xmind

    springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...

    PHP面向对象学习笔记之二 生成对象的设计模式

    单例模式(Singleton) 如果应用程序每次包含且仅包含一个对象,那么这个对象就是一单例. 用来替代全局变量. 复制代码 代码如下: <?php require_once(“DB.php”); class DatabaseConnection{ <STRONG><SPAN xss=...

    程序员考试刷题-OCP-notes:OCP学习笔记

    singleton 示例 枚举的简单教程: “方法签名”是方法名称和参数列表 注释是关于程序的额外信息,它是一种元数据。 它可以被编译器使用,甚至可以在运行时使用。 @Override 仅在引用方法时才允许。 正如没有覆盖字段...

    learnspace

    学习笔记 2020.12.15 守护进程进程组会话终端SIGHUP 2020.12.27 学习了C ++的单例类Singleton以及它的两种写法其中静态类主要用在某个对象在各个唯一能有一个实例的情况(实习期间参考wenpeng的写过一次) 懒汉...

    leetcode2-StayFoolish:保持饥饿,保持愚蠢!

    leetcode 2 个人持续学习总结项目 这个项目用来存放自己...学习笔记,ToOffer_Cpp刷到第35题 ToOffer_Cs 面试题2:实现Singleton模式:懒汉式、饿汉式、多线程安全单例等 Lua lua-5.2.1 源码学习 todo 学习lua vm 参考

    2020-03-29

    学习笔记之三十七 (二 单例:就是创建一个内存地址,重复拿来使用,节约内存空间 class Student: def init(self,name): self.name=name def show(self): print(‘self.name’) s=Student(‘huhu’) s1=Student(...

    asp.net知识库

    VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...

    Design-Patterns

    GoF的23种设计模式学习笔记,结合自己在实现工作项目中用到的情况,讲解设计模式。 职责链模式(Chain of Responsibility) 讲解点击 里面的Demo分别为 、 PPT下载点击 单例模式(Singleton) 讲解点击  代码点击 工厂...

    Object-oriented-programming-for-JavaScript-developers:适用于JavaScript开发人员的面向对象编程的代码存储库

    学习使用Node.js在JavaScript中构建可扩展的服务器应用程序 以三种编程语言生成实例:Python,JavaScript和C# 结合使用访问修饰符,前缀,属性,字段,属性和局部变量来封装和隐藏数据 掌握DOM操作,跨浏览器策略...

Global site tag (gtag.js) - Google Analytics