Design Pattern(3)-State Pattern

    xiaoxiao2021-03-25  113

    学过编译原理应该知道有限状态机,状态模式就是适用于那种希望 一个对象在不同状态下呈现不一样的行为的一种design pattern。

    我们以一个实例来诠释,有一个Door对象,Door对象有两个状态:OpenState,ClosedState,当我们提交一个请求的时候,它若在OpenState状态,希望它能执行关闭操作,它若在ClosedState状态,希望它能执行打开操作。

    官方类图:

    State:

    public abstract class State { public abstract void handle(Door door); }

    OpenState:

    public class OpenState extends State{ @Override public void handle(Door door) { System.out.println("the door has closed"); door.changeState(new ClosedState()); } }

    ClosedState:

    public class ClosedState extends State { @Override public void handle(Door door) { System.out.println("the door has opened"); door.changeState(new OpenState()); } }

    Door:

    public class Door { State state; public Door(State state){ this.state=state; } public void request() { state.handle(this); } protected void changeState(State state) { this.state=state; } }

    Client:

    public class Client { public static void main(String[] args){ Door door =new Door(new OpenState()); door.request(); door.request(); door.request(); } }

    输出为: the door has closed the door has opened the door has closed

    转载请注明原文地址: https://ju.6miu.com/read-15826.html

    最新回复(0)