一天一个设计模式之单例模式(singleton)
2010-08-08 21:05
197 查看
单例模式,其实这个模式运用时相当广泛的,如果仁兄你可能不懂设计模式,但是你的代码中却可能用过单例模式。单例模式的关键点就在单。从某些方面来说,我们可以把常量看过一种单例模式,即单例模式只有一个实例,每次引用都是相同的对象。
在GOF中,单例模式是创建型模型,对于单例模式,我们一般基于一个全局变量来实现:
在上述代码中我们通过一个static变量和私有构造函数来保证我们通过GetName函数取的值是同一个字符串。
String类型虽然是值类型的,但是只不过是将原本引用类型的string经过特殊处理让他具备值类型的特点而已,在这里我们依然将其当做引用类型。
另外,单例模式和享元模式是不同的:
享元模式是结构型模式,单例模式是创建型模式
单例模式是保证对象的唯一的实例,而享元模式是让每个轻量级的对象在内存中只有一个,实现过程中主要是要为共享对象提供一个存放的“仓库”(对象池)。
在GOF中,单例模式是创建型模型,对于单例模式,我们一般基于一个全局变量来实现:
public class People //类名 { private static string name; //字段 private People() //构造函数 { } public static string GetName() // 函数 { if (string.IsNullOrEmpty(name)) { name = "my name"; } return name; } }
在上述代码中我们通过一个static变量和私有构造函数来保证我们通过GetName函数取的值是同一个字符串。
String类型虽然是值类型的,但是只不过是将原本引用类型的string经过特殊处理让他具备值类型的特点而已,在这里我们依然将其当做引用类型。
另外,单例模式和享元模式是不同的:
享元模式是结构型模式,单例模式是创建型模式
单例模式是保证对象的唯一的实例,而享元模式是让每个轻量级的对象在内存中只有一个,实现过程中主要是要为共享对象提供一个存放的“仓库”(对象池)。
相关文章推荐
- 一天一个设计模式之享元模式(flyweight)
- 一天一个设计模式之适配器模式(Adapter) 推荐
- 一天一个设计模式---解释器模式
- 一天一个设计模式---状态模式
- 一天一个设计模式之适配器模式(Adapter)
- 一天一个设计模式之观察者模式
- java设计模式学习,一天一个
- 一天一个设计模式---单例模式
- 一天一个设计模式(5):中介者模式
- 一天一个设计模式---生成器模式
- 一天一个设计模式---观察者模式
- 一天学一个设计模式之(二):简单工厂模式
- 设计一个线程安全的单例(Singleton)模式
- 一天一个设计模式---桥接模式
- 每天一个设计模式之Singleton
- 一天一个设计模式---适配器模式
- 一天一个设计模式之建造者模式(Builder)
- 设计一个单例模式:Singleton
- 一天一个设计模式---享元模式
- 一天一个设计模式---策略模式