设计模式笔记之 - Singleton & Monostate

       这两个模式的作用都是为了使对象具有唯一性的特征,只是在实现上稍有差别,Singleton一般使用类的静态方法返回类的实例从而构造对象,这样可以先判断对象是否创建,如果创建就使用已创建的对象,这样保持了对象的唯一性,这在与构造一般对象时有所不同。Monostate模式表示用静态变量存储类的字段,这样,无论有多少个对象,所处理的内部字段都是一样,从而达到的效果也是一样,它在使用上与一般的对象是没有差别的,只是也能通过继承方便的派生出其他对象。

      

Singleton的特点:

l         适用于任何类,只要把构造函数变为私有增加相应的静态函数即可。

l         可以透过派生创建,给定一个类可以创建Singleton的子类。

l         延迟求值,只有真正需要的时候才创建对象。

l         销毁方法未定义,没有一致的销毁方法。

l         不能继承,从Singleton派生出来的类并不是Singleton类。

l         效率问题,每次创建的时候都要检查是否未空引用。

l         不透明性,使用者知道正在使用一个Singleton类,因为要调用Instance方法创建对象。

Monostate的特点:

l         透明性,使用Monostate对象和使用常规对象没什么区别。

l         可派生,可以派生出其他Monostate类。

l         多态性,由于方法不是静态的这就可以在派生类中复写它们,因此不同的派生类可以与基类表现不同的行为。

l         不可转换性:不能通过派生类把常规类转换成Monostate类。

l         效率问题:创建了真正的对象这样带来创建和销毁的开销。

l         内存占用:创建新对象必然造成内存占用。

 

posted on 2005-09-20 10:22  dragonpro  阅读(524)  评论(0编辑  收藏  举报

Free Web Counter