Monostate模式

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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值