单例模式定义: Ensure a class has only one instance ,and provide a global point pf access to it( 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例)
优点:1
- 内存只有一个实例 !减少内存开支特别对于频繁的创建和销毁而且又无法优化
- 减少系统性能开销
- 避免多重占用
- 可以设置全局访问点优化和共享资源
缺点
- 扩展难
- 对测试不利
- 与单一职责有冲突
使用环境:
- 要求生成唯一序列号的环境
- 再整个项目中需要一个共享访问点或共享数据
- 创建一个对象需要消耗的资源过多 如果要访问IO和数据库等资源
- 需要定义大量的静态常量和静态方法
代码结构:
第一种通用的:
public class Singleton {
private static final Singleton SINGLETON = new Singleton();
//限制产生多个对象
private Singleton(){
}
// 通过该方法获得实例对象
private static Singleton getSingleton(){
return SINGLETON;
}
// 类中的方法,尽量是static
public static void doSomeThing(){
}
}
第二种线程不安全的
public class Singleton {
private static Singleton SINGLETON = null;
//限制产生多个对象
private Singleton(){
}
// 通过该方法获得实例对象
private static Singleton getSingleton(){
if(SINGLETON==null){
SINGLETON= new Singleton();
}
return SINGLETON;
}
// 类中的方法,尽量是static
public static void doSomeThing(){
}
}
注: 自己记录读设计之禅的笔记