0%

设计模式笔记(五):创建型-单例模式

##单例模式(Singleton Pattern)
####注意
1:单例类只能有一个实例
2:单例类必须自己创建自己唯一的实例
3:单例类必须给其他对象提供这个实例
####意图
保证一个类仅有一个实例。并提供一个访问它的全局访问点
####主要解决
一个全局使用的类频繁创建销毁
####何时使用
控制实例数目。节省系统资源
####如何解决
判断系统是否已经有这个单例。如果有返回、没有创建
####关键代码
构造函数私有化
####应用实例
1:一个党只有一个主席
2:多线程中对文件的处理必须是唯一的一个实例来进行。
3:设备管理器常常被设计为单例模式。比如一个电脑有两台打印机。在输出的适合不能两台打印同一个文件
####优点
1:内存中只有一个实例,减少内存开销,
2:避免对资源的多重占用
####缺点:
没有接口、不能继承。和单一职责冲突。
####使用场景
1:产生唯一序列号
2:计数器
3:创建比较耗费资源的对象比如io 与数据库链接等
####总结:共有 懒汉式线程不安全、懒汉式线程安全(加锁)、饿汉式、双捡锁、登记式、枚举这些方式来创建单例 其中饿汉式,双捡锁,登记式,枚举比较适合平常用。懒汉式要么不 安全 要么效率低下不建议使用
####代码地址:https://github.com/xuxianyu/myGitHub/tree/master/DisignPattern/src/main/java/com/xxx/create/singleton