设计模式学习与实践(十九)----状态模式(state)

1.1.1        描述

l         正规描述

状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。

l         形象描述

MM交往时,一定要注意她的状态哦,在不同的状态时她的行为会有不同,比如你约她今天晚上去看电影,对你没兴趣的MM就会说有事情啦,对你不讨厌但还没喜欢上的MM就会说好啊,不过可以带上我同事么?,已经喜欢上你的MM就会说几点钟?看完电影再去泡吧怎么样?,当然你看电影过程中表现良好的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦。

1.1.2        类图&示意代码

public abstract class State(){

    public abstract void Operation1();

}

 

public class ConcreteState1 extends State(){

public void Operation1(){

    //to do

}

}

 

public class ConcreteState2 extends State(){

public void Operation1(){

    //to do

}

}

 

public class StateOwner(){

private State state;

 

public void setState(State state){

    this.state = state;

}

 

public void Operation1(){

    if(state != null){

        state.Operation1();

}

}

}

 

public class Client(){

public void main(String args[]){

    State s1 = new ConcreteState1();

    State s2 = new ConcreteState2();

    StateOwner so = new StateOwner();

    so.setState(s1);

    so.Operation1();

    so.setState(s2);

    so.Operation1();

}

}

 

1.1.3        举例

1.1.4        比较

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值