单例模式——Head First Design Patterns

来源:互联网 发布:windows 缩小行间距 编辑:程序博客网 时间:2024/05/22 04:25

定义:保证一个类只有一个实例,并且提供一个公有的获取该实例的方法。

 

使用场景:类当前没有任何属性并且以后也不大可能增加属性

 

类图:

 

代码样例:

防并发的:

public class Singleton {private static Singleton uniqueInstance; // other useful instance variables here private Singleton() {} public static synchronized Singleton getInstance() {if (uniqueInstance == null) {uniqueInstance = new Singleton();}return uniqueInstance;} // other useful methods here}


不考虑并发:

public class Singleton {private static Singleton uniqueInstance; // other useful instance variables here private Singleton() {} public static Singleton getInstance() {if (uniqueInstance == null) {uniqueInstance = new Singleton();}return uniqueInstance;} // other useful methods here}


 

 

优点:1)可以节省内存

缺点:1)如果类拥有属性,则会产生并发问题

 

类似的设计模式:

 

配套的内功心法:1)利用静态初始化创建类的实例能够保证实例的唯一性; 2)多个类加载器可能产生多个类,这样会产生多个相同的单例;