C#面向对象设计模式纵横谈(2): Singleton单件(创建型模式)
2006-04-25 12:59
507 查看
讲师:李建忠
模式分类
从目的来看:
– 创建型(Creational)模式:负责对象创建。
– 结构型(Structural)模式:处理类与对象间的组合。
– 行为型(Behavioral)模式:类与对象交互中的职责分配。
从范围来看:
– 类模式处理类与子类的静态关系。
– 对象模式处理对象间的动态关系。
动机(Motivation)
在软件系统中,经常有这样一些特殊的类,必须保证它们
在系统中只存在一个实例,才能确保它们的逻辑正确性、
以及良好的效率。
如何绕过常规的构造器,提供一种机制来保证一个类只有
一个实例?
这应该是类设计者的责任,而不是使用者的责任
意图(Intent)
保证一个类仅有一个实例,并提供一个该实例的全
局访问点。
——《设计模式》GoF
结构(Structure)
![](http://blog.csdn.net/images/blog_csdn_net/onlyxuyang/singleton.gif)
单线程Singleton模式的几个要点
• Singleton模式中的实例构造器可以设置为protected以允
许子类派生。
• Singleton模式一般不要支持ICloneable接口,因为这可能
会导致多个对象实例,与Singleton模式的初衷违背。
• Singleton模式一般不要支持序列化,因为这也有可能导致
多个对象实例,同样与Singleton模式的初衷违背。
• Singletom模式只考虑到了对象创建的管理,没有考虑对
象销毁的管理。就支持垃圾回收的平台和对象的开销来
讲,我们一般没有必要对其销毁进行特殊的管理。
• 不能应对多线程环境:在多线程环境下,使用Singleton模
式仍然有可能得到Singleton类的多个实例对象。
使用.NET类型初始化机制实现多线程Singleton 模式 (使用静态构造函数)
Singleton模式扩展
• 将一个实例扩展到n个实例,例如对象池的实现。
• 将new 构造器的调用转移到其他类中,例如多个
类协同工作环境中,某个局部环境只需要拥有某
个类的一个实例。
• 理解和扩展Singleton模式的核心是“如何控制用户
使用new对一个类的实例构造器的任意调用”。
模式分类
从目的来看:
– 创建型(Creational)模式:负责对象创建。
– 结构型(Structural)模式:处理类与对象间的组合。
– 行为型(Behavioral)模式:类与对象交互中的职责分配。
从范围来看:
– 类模式处理类与子类的静态关系。
– 对象模式处理对象间的动态关系。
动机(Motivation)
在软件系统中,经常有这样一些特殊的类,必须保证它们
在系统中只存在一个实例,才能确保它们的逻辑正确性、
以及良好的效率。
如何绕过常规的构造器,提供一种机制来保证一个类只有
一个实例?
这应该是类设计者的责任,而不是使用者的责任
意图(Intent)
保证一个类仅有一个实例,并提供一个该实例的全
局访问点。
——《设计模式》GoF
结构(Structure)
![](http://blog.csdn.net/images/blog_csdn_net/onlyxuyang/singleton.gif)
单线程Singleton模式的几个要点
• Singleton模式中的实例构造器可以设置为protected以允
许子类派生。
• Singleton模式一般不要支持ICloneable接口,因为这可能
会导致多个对象实例,与Singleton模式的初衷违背。
• Singleton模式一般不要支持序列化,因为这也有可能导致
多个对象实例,同样与Singleton模式的初衷违背。
• Singletom模式只考虑到了对象创建的管理,没有考虑对
象销毁的管理。就支持垃圾回收的平台和对象的开销来
讲,我们一般没有必要对其销毁进行特殊的管理。
• 不能应对多线程环境:在多线程环境下,使用Singleton模
式仍然有可能得到Singleton类的多个实例对象。
使用.NET类型初始化机制实现多线程Singleton 模式 (使用静态构造函数)
Singleton模式扩展
• 将一个实例扩展到n个实例,例如对象池的实现。
• 将new 构造器的调用转移到其他类中,例如多个
类协同工作环境中,某个局部环境只需要拥有某
个类的一个实例。
• 理解和扩展Singleton模式的核心是“如何控制用户
使用new对一个类的实例构造器的任意调用”。
相关文章推荐
- C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)
- C#面向对象设计模式纵横谈2 Singleton单件创建型模式
- C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 笔记
- C#面向对象设计模式纵横谈——2.Singleton 单件(创建型模式)
- [整理]C#面向对象设计模式纵横谈(2):Singleton单件(创建型模式)
- [导入]C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式).zip(9.57 MB)
- C#面向对象设计模式纵横谈二之Singleton单件(创建型模式)
- C#面向对象设计模式纵横谈(4):Builder 生成器(创建型模式)
- C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)
- C#面向对象设计模式纵横谈——5.Factory Method 工厂方法模式(创建型模式)
- singleton(单件)-对象创建型模式
- C#面向对象设计模式:Singleton 单件(创建型模式)
- 设计模式笔记--创建型模式之五--单件 Singleton
- 设计模式单件(Singleton)---对象创建型模式
- C#面向对象设计模式第二讲:Singleton Pattern单件模式(创建型模式)
- [设计模式]SINGLETON(单件)_对象创建型模式
- 面向对象设计模式学习(二):Singleton单件创建型模式
- C#面向对象设计模式纵横谈(Singleton单件)
- 设计模式(1)-创建型-单件(Singleton)模式 (个人笔记)
- C#面向对象设计模式纵横谈 笔记5 Factory Method 工厂方法(创建型模式)