Java设计模式菜鸟系列(十三)状态模式建模与实现
来源:互联网 发布:火箭队 勇士 知乎 编辑:程序博客网 时间:2024/05/21 20:19
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39829859
状态模式(State):允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。状态模式说白了就是一个对象有不同的状态,不同的状态对应不同的行为,它其实是对switch case这样的语句的拓展。
一、uml建模:
二、代码实现
/** * 示例:状态模式-- 一个对像有不同的状 态,不同的状态对应不同的行为 * * 下面四则运算为例 */interface State {public double operate(double num1, double num2);}/** * 加法 */class AddOperator implements State {@Overridepublic double operate(double num1, double num2) {return num1 + num2;}}/** * 减法 */class SubOperator implements State {@Overridepublic double operate(double num1, double num2) {return num1 - num2;}}/** * 学生 */class Student {private State state;public Student(State state) {this.state = state;}/** * 设置状态 */public void setState(State state) {this.state = state;}public double operate(double num1, double num2) {return state.operate(num1, num2);}}/** * 客户端测试类 * * @author Leo */public class Test {public static void main(String[] args) {Student s1 = new Student(new AddOperator());System.out.println(s1.operate(12, 23));/** * 改变状态,即改变了行为 --> 加法运算变成了减法运算 */s1.setState(new SubOperator());System.out.println(s1.operate(12, 23));}}
三、总结
封装基类状态的行为,并将行为委托到当前状态。
2 0
- Java设计模式菜鸟系列(十三)状态模式建模与实现
- Java设计模式菜鸟系列(二十三)访问者模式建模与实现
- Java设计模式菜鸟系列(一)策略模式建模与实现
- Java设计模式菜鸟系列(二)观察者模式建模与实现
- Java设计模式菜鸟系列(三)装饰者模式建模与实现
- Java设计模式菜鸟系列(四)工厂方法模式建模与实现
- Java设计模式菜鸟系列(五)抽象工厂模式建模与实现
- Java设计模式菜鸟系列(六)单例模式建模与实现
- Java设计模式菜鸟系列(七)命令模式建模与实现
- Java设计模式菜鸟系列(八)适配器模式建模与实现
- Java设计模式菜鸟系列(九)外观模式建模与实现
- Java设计模式菜鸟系列(十)模板方法模式建模与实现
- Java设计模式菜鸟系列(十一)迭代器模式建模与实现
- Java设计模式菜鸟系列(十二)组合模式建模与实现
- Java设计模式菜鸟系列(十四)代理模式建模与实现
- Java设计模式菜鸟系列(十五)建造者模式建模与实现
- Java设计模式菜鸟系列(十六)原型模式建模与实现
- Java设计模式菜鸟系列(十七)桥接模式建模与实现
- 1014. 福尔摩斯的约会 (20)
- 《大话数据结构》读书笔记之线性表基本操作(静态单链表实现)
- Android程序 依赖库引用Gson 报java.lang.NoClassDefFoundError: com/google/gson/Gson 解决
- 二进制
- HDOJ 3473 Minimum Sum
- Java设计模式菜鸟系列(十三)状态模式建模与实现
- php单引号和双引号的区别
- 码农的产品思维培养第一节(人人都是产品经理读书笔记)
- 章鱼哥出品—VB.Net 自定义快捷键详解之半全局快捷键
- Native Client (NaCl) is an open-source technology for running native compiled code in the browser
- 进位问题
- Javascript代码
- 简单的paython聊天服务器
- Google 地图 API 参考