首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

单例模式的两种兑现

2012-10-28 
单例模式的两种实现Singleton模式当要使用单例模式时,最常用的是Singleton模式:public class MonoState {p

单例模式的两种实现
Singleton模式

当要使用单例模式时,最常用的是Singleton模式:

public class MonoState {private static int x = 0;public MonoState(){}public void setX(int x){this.x = x;}public int getX(){return x;}}

?

?无论创建了多少Monostate实例,他们都表现得像一个对象一个。这就是两个模式的区别,一个关注行为,一个关注结构。Singelton模式强制结构上的单一性。它防止创建出多个对象实例,相反,Monostate模式则强制行为上的单一性,而不有强加结构方面的限制。Monostate的测试用例对Singleton都是有效的,但Singleton的测试用例却不适用于Monostate类。

优点:

?

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

?

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

?

?

热点排行