设计模式(二):MonoState模式

MonoState模式:

先说说MonoState这个单词的意思,设计模式的名字都是很有意思的,因为为了方便交流、记忆,所以设计模式的命名都对该模式的意图进行了表述。Mono是一个词根,英语中Mono,Mon都表示的是1的意思,state意思为"状态"。MonoState的意思就是"单一的状态"。

MonoState模式同Singleton一样也是一种保证单一性的模式。但是它和Singleton模式有 意图 实现上的差别。Singleton模式是通过将默认构造函数声明为private限制客户端程序对类的直接 new创建 实例化,并使用static(类属)的方式来保证类的对象单一,而MonoState模式却是将它的构造函数声明为public,而将类中所有的字段声明为static(类属)。换句话说,MonoState并不限制创建对象的个数,但是它的状态却只有一个状态。

实例代码(Java):

public   class  MonoState  {
    
private static String x;
    
    
public MonoState(){}
    
    
public String GetX() {
                            
return x;
    }


    
public void SetX(String x) {
           MonoState.x 
= x;
    }

}

MonoState模式的实现很“诡异”啊!它关注的焦点是类所实例化的所有对象只具有惟一状态,而不管客户端程序实例化了多少个MonoState对象。

MonoState的好处是:

1  对客户端程序来说是透明的。客户端程序可以随意创建对象,但是对象的状态是唯一的,这一点客户端不用知道。

2  可继承性。从MonoState派生出来的也是MonoState。实际上,所有的MonoState的派生类都是相同的MonoState的一部分,因为它们都共享相同的static变量。

3  支持多态性。因为MonoState的方法不像Singleton的static方法,它是可以被重写的。

4  易于创建和销毁。

缺点:

1  不能转换。非MonoState类不能通过继承转换为MonoState类。

2  效率。因为它会有对象,所以有许多产生,销毁的过程。这些通常都导致效率降低。

3  空间占用。因为MonoState的变量都是静态的,所以尽管MonoState不被使用,它们同样要占用空间。

4  平台约束。不能够在不同的JVM实体或者不同的平台上使用MonoState。

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值