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)就是一个对象的行为会随内部状态变化而发生改变。也属于行为型模式。
87 0
Java--设计模式-22-状态模式
|
设计模式 算法
Java--设计模式-23-状态模式
模板模式(Template Pattern)就是在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类中,使得子类可以在不改变一个算法的结构前提下即可重定义该算法的某些特定步骤。
90 0
Java--设计模式-23-状态模式
|
设计模式 前端开发
Java-设计模式-20-中介者模式
中介者模式(Mediator Pattern)就是用一个中介类将多个对象和类之间的交互全部放到该类中来处理,这样使得对象之间不需要显式的相互通信,降低代码的耦合性。也属于行为型模式。
67 0
Java-设计模式-20-中介者模式
|
设计模式 算法 Java
Java中常用的设计模式【策略模式】
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
137 0
Java中常用的设计模式【策略模式】
|
设计模式 Java
Java中常用的设计模式【观察者模式】
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
129 0
Java中常用的设计模式【观察者模式】
|
设计模式 算法 Java
JAVA 设计模式-策略模式
策略模式(Strategy Pattern) 也叫 政策模式(Policy Pattern)。指的是对象具备某个行为,但是在不同的场景中,该行为有不同的实现算法
181 0
|
设计模式 算法 Java
java 设计模式之模板方法模式
java 设计模式之模板方法模式
115 0
java 设计模式之模板方法模式
|
设计模式 算法 Java
Java-设计模式之策略模式
策略模式作为常用的设计模式之一,在我们开发过程中经常会被用到;本文从概念、角色、实例应用、设计原则、优缺点和应用场景等方面对策略模式进行了解读,希望可以对大家有所帮助;如果有问题,欢迎大家来指证和讨论;
813 0
Java-设计模式之策略模式
|
设计模式 安全 Java
Java中的设计模式(一):观察者模式
让我们从司机和红绿灯的关系来探究一下观察者模式
Java中的设计模式(一):观察者模式
|
算法 Java Go
JAVA中的设计模式三(策略模式)
问题: 如何让算法和对象分开来,使得算法可以独立于使用它的客户而变化?   方案: 把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口,然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。
796 0