|  | 网站首页 | .Net研究 | 
您现在的位置: 程序员之路 >> .Net研究 >> 相关资讯 >> 学习体会 >> 文章正文
赞助商链接
频 道 导 航
.Net研究频道栏目导航
相 关 文 章
Csharp设计模式初探-Singleton模式           
Csharp设计模式初探-Singleton模式
作者:SongLee 文章来源:不详 更新时间:2007-5-10 11:53:29

Csharp设计模式初探-Singleton模式

单线程Singleton模式的几个要点

Singleton模式中的实例构造器可以设置为protected,允许子类的派生;通常是设置为private

Singleton模式一般不要支持ICloneable接口,因为这个可能会导致多个对象实例,与Singleton模式的初衷有所违背;(ICloneable接口通常是用做实例的克隆的,虽然可以做一个浅拷贝,即影子拷贝,实际上也是没有必要的)

Singleton模式一般不要支持序列化,因为这也有可能导致多个对象实例,同样与Singleton模式的初衷有所违背;(构造对象出了天然的构造器方法来构造,还可以通过序列化来构造对象,要在严格的意义上保证一个对象不被滥用,构造对象的时候可以将其序列化到内存流中,然后通过反序列化,从而生成一个新的实例,新的实例的地址同原来的地址是不同的,两个实例属于一个完全的深拷贝)

Singleton模式只考虑到了对象创建的管理,没有考虑对象销毁的管理。就支持垃圾回收的平台和对象的开销来讲,一般没有必要对销毁进行特殊的管理(通过对入口点的限制和延迟加载保持对象的开销最小,而且通常引用的是一个只读的静态字段,一旦初始化以后就相当与垃圾回收中全局的的跟,这就保证了不可能被回收,在类型被卸载的时候才可能被回收,因为对象的开销只有一个,这个开销一般不会很大)

不能应对多线程环境:在多线程环境下,使用Singleton模式仍然有可能得到Singleton类的多个实例对象

Singleton模式扩展

将一个实例扩展到n个实例,比如对象池的实现

将new构造器的调用转移到其他类中,例如多个类协同工作的环境中,某个局部只需要拥有某个类的一个实例

理解和扩展Singleton模式的核心是“如何控制用户使用new对一个类的实例构造器的任意调用”

.net Framework中Singleton模式的应用

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • .Net研究栏目导航
    网站频道导航