牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Monostate模式

来源:http://www.cnblogs.com/light/archive/2004/07/27/27790.html

请注意这两个模式的区别,在于一个关注行为,而另一个关注结构。Singleton模式强调结构上的单一性。它防止创建多个对象实例。相反,Monostate模式则强制行为上的单一性,而没有加强结构方面的限制。为了强调这个区别,请考虑如下事实:Monostate的测试用例对Singleton类是有效的,但是Singleton的测试用例对却远不适用于Monostate类。

Monostate模式的好处在于:
透明性:使用Monstate对象和使用常规(regular)对象没有什么区别。使用者不需要知道对象是Monostate。
可派生性:Monostate的派生类都是Monostate。事实上,Monostate的所有派生类都是同一个Monostate的一部分。它们共享相同的静态变量。
多态性:同于Monostate的方式不是静态的,所以可以在使用派生类中覆写它们。因此,不同的派生类可以基于相同的静态变量表现出不同的行为。

Monostate模式的代价在于:
不可转换性:不能透过派生类把常规类转换成Monostate类。
效率问题:因为Monostate是真正的对象,所以会导致许多的创建和摧毁开销。
内存占用:即使从未使用Monostate,它的变量也要占据内存空间。
平台局限性:Monostate不能跨多个JVM或者多个平台工作。

以我的经验来看Monostate模式的使用应该是一种比较自然的,不过我开发了几年还真的没有遇到过这种这种类似于有限机的应用。

posted on 2007-12-07 01:49 杨粼波 阅读(595) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理