23种设计模式(一) 单例模式
2016-08-26 12:20
190 查看
单例模式
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式是23种设计模式中最简单的一种,它有三个要素:
私有的构造方法
指向自己实例的私有静态引用
以自己实例为返回值的静态的公有的方法
单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例。饿汉式单例在单例类被加载时候,就实例化一个对象交给自己的引用;而懒汉式在调用取得实例方法的时候才会实例化对象。
饿汉式单例
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return singleton;
}
}
懒汉式单例
public class Singleton {
private static Singleton singleton;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
单例模式的优点:
在内存中只有一个对象,节省内存空间。
避免频繁的创建销毁对象,可以提高性能。
避免对共享资源的多重占用。
可以全局访问。
适用场景:由于单例模式的以上优点,所以是编程中用的比较多的一种设计模式。我总结了一下我所知道的适合使用单例模式的场景:
需要频繁实例化然后销毁的对象。
创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
有状态的工具类对象。
频繁访问数据库或文件的对象。
以及其他我没用过的所有要求只有一个对象的场景。
相关文章推荐
- 关于23种设计模式
- 关于23种设计模式的有趣见解
- 关于23种设计模式的有趣见解
- 关于23种设计模式得有趣见解
- [转载]关于23种设计模式的有趣见解
- 关于23种设计模式的有趣见解(转)
- 关于23种设计模式的有趣见解(转)
- 关于23种设计模式的有趣见解(转)
- (转)关于23种设计模式的有趣见解
- 追MM与Java的23种设计模式[转]
- (转)23种设计模式汇集
- 追MM与Java的23种设计模式
- 追MM与Java的23种设计模式[转]
- 23种设计模式汇集
- 关于23种设计模式的有趣见解
- 关于23种设计模式的有趣见解(转)
- 关于23种设计模式的有趣见解 (转载)
- 追mm与23种gof设计模式【转载】
- MM与23种设计模式的比较(存下来慢慢看)
- 追MM与Java的23种设计模式