JAVA 设计模式 状态模式

简介: 用途 状态模式 (State) 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式是一种行为型模式。    结构 图-状态模式结构图 State : 定义一个接口以封装与 Context 的一个特定状态相关的行为。

用途


状态模式 (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设计模式》 
目录
相关文章
|
设计模式
Java--设计模式-22-状态模式
状态模式(State Pattern)就是一个对象的行为会随内部状态变化而发生改变。也属于行为型模式。
91 0
Java--设计模式-22-状态模式
|
设计模式 算法
Java--设计模式-23-状态模式
模板模式(Template Pattern)就是在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类中,使得子类可以在不改变一个算法的结构前提下即可重定义该算法的某些特定步骤。
91 0
Java--设计模式-23-状态模式
|
设计模式 前端开发
Java-设计模式-20-中介者模式
中介者模式(Mediator Pattern)就是用一个中介类将多个对象和类之间的交互全部放到该类中来处理,这样使得对象之间不需要显式的相互通信,降低代码的耦合性。也属于行为型模式。
70 0
Java-设计模式-20-中介者模式
|
设计模式 算法 Java
Java中常用的设计模式【策略模式】
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
142 0
Java中常用的设计模式【策略模式】
|
设计模式 Java
Java中常用的设计模式【装饰器模式】
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
139 0
Java中常用的设计模式【装饰器模式】
|
设计模式 算法 Java
JAVA 设计模式-策略模式
策略模式(Strategy Pattern) 也叫 政策模式(Policy Pattern)。指的是对象具备某个行为,但是在不同的场景中,该行为有不同的实现算法
183 0
|
设计模式 Java uml
java 设计模式之装饰器模式学习
java 设计模式之装饰器模式学习
125 0
java 设计模式之装饰器模式学习
|
设计模式 算法 Java
java 设计模式之模板方法模式
java 设计模式之模板方法模式
121 0
java 设计模式之模板方法模式
|
设计模式 算法 Java
Java-设计模式之策略模式
策略模式作为常用的设计模式之一,在我们开发过程中经常会被用到;本文从概念、角色、实例应用、设计原则、优缺点和应用场景等方面对策略模式进行了解读,希望可以对大家有所帮助;如果有问题,欢迎大家来指证和讨论;
821 0
Java-设计模式之策略模式
|
设计模式 自动驾驶 Java
Java中的设计模式(三):装饰器模式
从多型号小鹏中学习装饰器模式
Java中的设计模式(三):装饰器模式