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

来源:互联网 发布:热血江湖武勋阶段数据 编辑:程序博客网 时间:2024/06/16 19:09

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        比较