常用的软件设计模式(一)单例模式

2019-04-14 16:33发布

单例模式:即一个类只有一个实例,在类里自己创建自己的实例。 优点: (1)单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。 (2)因为类控制了实例化过程,所以类可以灵活更改实例化过程。尤其是在C++中,每次new都要delete,而是用单例模式可以避免忘记delete造成的内存泄漏,只在本类的内部delete实例就可以了 (3)方便对实例进行管理,减少重复的代码,减少内存开销 缺点: (1)应为内部实例化的对象为静态全局变量,因此没有接口,不能继承 (2)与单一职责原则(这个之后会做详细介绍)冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 该模式可以应用在很多编程语言上,这里以C#为例 //单例模式的一般实现 public class TxtManager { //私有对象记录唯一实例 private static TxtManager instance; //让构造函数为 private,这样该类就不会被实例化 private TxtManager(){} //获取唯一可用的对象的公有方法 public static TxtManager getInstance() { if(null == instance) { instance = new TxtManager(); } return instance; } } //调用 public class SingleDemo { //编译时错误:构造函数 SingleObject() 是不可见的 //SingleObject object = new SingleObject(); //获取唯一可用的对象 TxtManager object = TxtManager.getInstance(); }