JAVA 设计模式 状态模式

xiaoxiao2021-02-28  116

用途


状态模式 (State) 当一个对象的 内在状态改变时允许 改变其行为,这个对象看起来像是改变了其类。 状态模式是一种 行为型模式。

 

 

结构

图-状态模式结构图

State : 定义一个接口以封装与 Context 的一个特定状态相关的行为。 abstract  class State {      public  abstract  void Handle(Context context); }

ConcreteState : 每一个子类实现一个与 Context 的一个状态相关的行为。

class ConcreteStateA  extends State {     @Override      public  void Handle(Context context) {         context.SetState( new ConcreteStateB());     } } class ConcreteStateB  extends State {     @Override      public  void Handle(Context context) {         context.SetState( new ConcreteStateA());     } }

Context : 维护一个 ConcreteState 子类的实例,这个实例定义当前的状态。

class Context {      private State state;      public Context(State state) {          this.state = state;     }           public  void SetState(State state) {          this.state = state;         System.out.println("当前状态:" + state.getClass().getName());     }      public State GetState() {          return state;     }           public  void Request() {         state.Handle( this);     } }

测试代码

public  class StatePattern {      public  static  void main(String[] args) {         Context c =  new Context( new ConcreteStateA());         c.Request();         c.Request();     } }

运行结果

当前状态:ConcreteStateB 当前状态:ConcreteStateA

推荐

本文属于 JAVA设计模式系列

参考资料

《大话设计模式》

《HeadFirst设计模式》 
转载请注明原文地址: https://www.6miu.com/read-65904.html

最新回复(0)