《大话设计模式》—— 读后感(21)有些类也需计划生育——单例模式
2014-05-18 20:15
183 查看
单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。(摘抄)解决的问题:保证一个类在内存中的对象唯一性。
比如:多程序读取一个配置文件时,建议配置文件封装成对象。会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。
public class Singleton { private Singleton(){} private static Singleton singleton; public static Singleton getSingleton() { if (singleton == null) { singleton = new Singleton(); } return singleton; } } class Client { public static void main() { Singleton singleton1 = Singleton.getSingleton(); Singleton singleton2 = Singleton.getSingleton(); if (singleton1 == singleton2) { System.out.println("yes"); } else { System.out.println("no"); } } }
上面这种单例模式的类加载方式被称为懒汉式(延迟加载方式)
下面这种为饿汉式
public class Singleton { private Singleton(){} private static Singleton singleton = new Singleton(); public static Singleton getSingleton() { return singleton; } }
饿汉式在多线程时不会重复生成实例,因为静态初始化让它在程序加载的时候已经生成实例了,懒汉式如果要在多线程时也不出问题,那么需要双重锁定
public class Singleton { private Singleton(){} private static Singleton singleton; public static Singleton getSingleton() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
这样懒汉式也可以在多线程时调用了。
相关文章推荐
- 《大话设计模式》--有些类也需计划生育--单例模式<Singleton>(21)
- 大话设计模式--第21章 有些类也需要计划生育--单例模式
- 《大话设计模式》——读后感 (2)商场促销——策略模式
- 《大话设计模式》——读后感 (6)穿什么有这么重要?——装饰模式
- 《大话设计模式》——读后感 (3)穿什么有这么重要?——装饰模式之理解实例(2)
- 《大话设计模式》——读后感 (3)穿什么有这么重要?——装饰模式之理论实例(1)
- 【设计模式】有些类也需要计划生育 -- 单例模式
- 《大话设计模式》——读后感 (6)老板回来了,我不知道?——观察者模式之事件委托(2)
- 《大话设计模式》学习笔记21:中介者模式
- 《大话设计模式》——读后感 (4)为别人做嫁衣?——动态代理模式(2)
- 《大话设计模式》—— 读后感 (7)为别人做嫁衣——代理模式
- 《大话设计模式》—— 读后感(18)如果再回到从前——备忘录模式
- 《大话设计模式》—— 读后感(16)无尽加班何时休息——状态模式
- 大话设计模式(读后感)——23种设计模式、六大原则
- 《大话设计模式》—— 读后感(25)世界需要和平——中介者模式
- 《大话设计模式》——读后感 (3)&(4)&(5) 设计模式原则
- 《大话设计模式》—— 读后感 (12)牛市股票还会亏钱?—— 外观模式
- 《大话设计模式》—— 读后感(23)烤羊肉串引来的思考——命令模式
- 有些类也需要计划生育--单例模式
- 《大话设计模式》——读后感 (6)老板回来了,我不知道?——观察者模式之理论实例(1)