设计模式笔记(七)设计模式之一--单例模式
来源:互联网 发布:巴黎世家机车包 知乎 编辑:程序博客网 时间:2024/05/16 10:29
定义
Singleton Pattern
我们都知道一个类class文件如果是public的话,可以通过new关键字来以class为模板,创建很多真实的对象。但是单例模式要求:一个类创建出一个对象。
一般形式
通过private修饰构造方法,控制这个类只能让自己创建一个对象。只能通过方法获得这个对象的共享实例。
//单例模式一般写法(饿汉模式)public class SingletonClassA { //仅拥有自己的一个实例 private static final SingletonClassA singletonA = new SingletonClassA(); //限制产生多个对象 private SingletonClassA(){} //通过方法来获得这个实例而非构造方法 public static SingletonClassA getSingletonClassA() { return singletonA; }}
适用场景
如果要求一个类有且仅有一个对象,如果出现多个对象就会出现不良反应,就可以采用单例模式。
例如我们的项目中数据库连接一般只有一个。
优点
很明显是减少了内存消耗。
缺点
1.扩展代码很困难,只能修改源代码
2.不利于测试
3.高并发情况下,注意单例模式的线程同步问题
例如懒汉模式下的单例:
//单例模式一般写法public class SingletonClassA { //仅拥有自己的一个实例 private static final SingletonClassA singletonA = null; //限制产生多个对象 private SingletonClassA(){} //通过方法来获得这个实例而非构造方法 public static SingletonClassA getSingletonClassA() { if(null == singletonA) { return new SingletonClassA(); } return singletonA; }}
因为获得singletonA实例的方法getSingletonClassA非同步的,这就可能导致两个线程获得的实例并非同一个。一般是加上synchronized。推荐使用饿汉模式来做。
4.java中如果类实现了Cloneable接口,实现clone方法是可以复制出一个新的对象的。所以尽量不要这样做。
阅读全文
0 0
- 设计模式笔记(七)设计模式之一--单例模式
- 设计模式之一 :单例设计模式
- 设计模式之一 单例设计模式
- 设计模式之一 单例设计模式
- IOS设计模式之一(MVC模式,单例模式)
- iOS设计模式之一(MVC模式,单例模式)
- iOS设计模式之一(MVC模式,单例模式)
- IOS设计模式之一(MVC模式,单例模式)
- iOS设计模式之一(MVC模式,单例模式)
- IOS设计模式之一(MVC模式,单例模式)
- iOS设计模式之一(MVC模式,单例模式)
- ios设计模式之一(MVC模式,单例模式)
- IOS设计模式之一(MVC模式,单例模式)
- IOS设计模式之一(MVC模式,单例模式)
- IOS设计模式之一(MVC模式,单例模式)
- IOS设计模式之一(MVC模式,单例模式)
- IOS设计模式之一(MVC模式,单例模式)
- IOS设计模式之一(MVC模式,单例模式)
- 排队购票
- HDU2075
- 私有云落地解决方案之openstack高可用(pike版本)-nova
- 线程安全性——基本知识点
- 深入理解jvm:对象的生存还是死亡
- 设计模式笔记(七)设计模式之一--单例模式
- javaScript学习笔记
- 包装类Wrapper Class
- PHP文件上传:\$_FILES数组及$_FILES['userfile']['error']中返回的错误代码
- 代码重构实践
- Slim研读笔记一之如何读框架
- 程序跳过了validation.xml 直接执行后面的execute();求解????
- 如何充分利用多核CPU,计算很大的List中所有整数的和
- code forces Hopscotch (找规律)