设计模式笔记之 - 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         内存占用:创建新对象必然造成内存占用。

<?xml:namespace prefix = o />

 

转载于:https://www.cnblogs.com/Dragonpro/archive/2005/09/20/240222.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值