转载请注明出处:
状态模式(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)); }}
三、总结
封装基类状态的行为,并将行为托付到当前状态。
版权声明:本文博主原创文章,博客,未经同意不得转载。