模式是用来解决问题的,Singleton就是用来解决一个全局可见的类型的实例的访问控制的问题。如果某一个类在程序实例中只有一个实例,或者某一个类的对象需要在程序的全局可以访问,比如Log操作,你很可能会想到用Singleton。
在很多糟糕的设计中,充斥着各种各样的Singleton,一个简单的程序可能有十数个*Manager, 代码中充斥着*Manager.Instance,如果在这些Manager在构造或者析构上存在任何的依赖关系的,你很难确定在你需要用某一个Manager的时候,他已经OnBoard了呢。在多线程的情况下,这些manager的使用也需要极为小心,因为你不知道目前那一个manager正在lock状态中,死锁极为常见。
Singleton的另一个问题是扩展性,当你需要Scale out你的service的时候,使用Singleton的程序往往需要更多的修改,而单个对象则很容易成为系统的单点瓶颈。
阅读全文>
发表于 @ 2007年04月08日 17:56:00|评论(loading...)|编辑|举报|收藏
.NET中,构造对象往往都是要通过构造函数的,但是也有情况是特殊的。在某些情况下,编译器会跳过构造函数,那么,你知道是什么情况下么?
基础回顾性文章,讲述构造函数的作用和一些关于构造函数的规则,另外介绍了一种不经过构造函数的对象构造的情况。阅读全文>
发表于 @ 2007年04月08日 16:53:00|评论(loading...)|编辑|举报|收藏