状态模式允许一个对象在其内部状态改变的时候改变其行为。他把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。
/**
* 环境角色
*/
public class Context {
private State state;
public void setState(State state) {
this.state = state;
}
public void sampleOperation() {
state.sampleOperation();
}
}
/**
* 抽象状态角色
*/
public interface State {
public void sampleOperation();
}
/**
* 具体状态角色
*/
public class ConcreteState1 implements State{
public void sampleOperation() {
System.out.println("ConcreteState1");
}
}
/**
* 具体状态角色
*/
public class ConcreteState2 implements State {
public void sampleOperation() {
System.out.println("ConcreteState2");
}
}
public class Client {
public static void main(String[] args) {
Context context = new Context();
ConcreteState1 concreteState1 = new ConcreteState1();
ConcreteState2 concreteState2 = new ConcreteState2();
context.setState(concreteState1);
context.sampleOperation();
context.setState(concreteState2);
context.sampleOperation();
}
}
状态模式和策略模式的区别:
一个简单的方法就是考察环境角色是否有明显的状态和状态过滤。如果环境只有一个状态,那么就应当使用策略模式。
而状态模式则适用于另一种情况,即环境角色有明显的转移。
另一个是策略模式的环境类自己选择一个具体策略类,而状态模式的环境类是被外在原因放在一个具体状态中。
分享到:
相关推荐
java设计模式之-状态模式-实现
设计模式的状态模式的例子,希望对大家有用~~~~~~~~
设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计...全书囊括单例设计模式、工厂模式、门面模式、代理模式、观察者模式、命令模式、模板方法模式、复合模式、状态设计模式以及反模式等多种设计模式。
设计模式-状态模式(讲解及其实现代码)
状态模式(State) 用意:允许一个对象当状态改变时,改变其行为。
java设计模式之状态模式入门
java,设计模式中的一种,状态设计模式。
状态设计模式用到的主要(30P概念 最小抽象状态设计模式 视频播放器具体状态应用程序 扩展状态设计:添加状态 添加更多的状态和流媒体播放能力 小结 第11章 策略模式 什么是策略模式? 策略模式使用的主要OOP...
通过学习如何在代码中使用...第10章 状态设计模式 第5部分 MySQL和PHP设计模式 第11章 通用类负责连接,代理模式保证安全 第12章 策略设计模式的灵活性 第13章 职责链设计模式 第14章 利用观察者模式构建多设备CMS
设计模式C++学习之状态模式(State)
这份文件讲诉了设计模式之状态模式,是以例子的形式进行讲诉的,希望可以帮助学习的人!
NULL 博文链接:https://zhangyan19870108.iteye.com/blog/1992409
设计模式之状态模式实例,用Java实现,副讲解 设计模式之状态模式实例,用Java实现,副讲解 设计模式之状态模式实例,用Java实现,副讲解
设计模式之状态模式的Java版本实现和UML类图设计
Java 23种设计模式24状态模式.pdf
相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可以基于此项目进行扩展来开发出更多...
java设计模式之状态模式,通过实际生活中的例子说明状态模式的原理。
设计模式专题之(二十一)状态模式---设计模式状态模式示例代码(python--c++)
状态设计模式:CPSC 600状态模式存储库
PPT内容包括:内附代码,实例,方便理解。 继承、封装、多态、UML ...设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于理解,对于深入理解OO思想有很大帮助。