Java设计模式菜鸟系列(十三)建模和实现状态模式
2015-09-20 20:52
856 查看
转载请注明出处:/article/1330862.html
状态模式(State):同意对象在内部状态改变时改变它的行为,对象看起来好像改动了它的类。状态模式说白了就是一个对象有不同的状态。不同的状态相应不同的行为。它事实上是对switch
case这种语句的拓展。
状态模式(State):同意对象在内部状态改变时改变它的行为,对象看起来好像改动了它的类。状态模式说白了就是一个对象有不同的状态。不同的状态相应不同的行为。它事实上是对switch
case这种语句的拓展。
一、uml建模:
二、代码实现
/** * 演示样例:状态模式-- 一个对像有不同的状 态,不同的状态相应不同的行为 * * 以下四则运算为例 */ interface State { public double operate(double num1, double num2); } /** * 加法 */ class AddOperator implements State { @Override public double operate(double num1, double num2) { return num1 + num2; } } /** * 减法 */ class SubOperator implements State { @Override public 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); } } /** * client測试类 * * @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)); } }
三、总结
封装基类状态的行为,并将行为托付到当前状态。相关文章推荐
- 转 java类的装载(Loading)、链接(Linking)和初始化(Initialization)
- Eclipse快捷键大全
- eclipse的环境变量的配置
- java__反射、批处理、对象拷贝
- 转 Java类加载的延迟初始化
- Java关键字final、static使用总结
- 用NetBeans做简单的计算器
- java SE复习笔记30
- Java序列化的时候SerialVersion的作用
- java__基础03
- java基础之抽象类与接口的形式参数和返回值
- java基础之抽象类与接口的形式参数和返回值
- java SE复习笔记29
- java swing 界面
- Spring MVC 4.X ResponseBody 日期类型Json 处理
- 转 java 四种实现延迟加载的方法
- 解决myeclipse10.x的Servers产生的at com.genuitec.eclipse.ast.deploy.core.Deployment.<init>(Unknown Source)错
- Spring AOP基础知识
- java SE复习笔记28
- JAVA编程