ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
状态模式(State):允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。状态模式说白了就是一个对象有不同的状态,不同的状态对应不同的行为,它其实是对switch case这样的语句的拓展。 ##一、uml建模: ![](https://box.kancloud.cn/2016-02-19_56c7196e28b25.jpg) ##二、代码实现 ~~~ /** * 示例:状态模式-- 一个对像有不同的状 态,不同的状态对应不同的行为 * * 下面四则运算为例 */ 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); } } /** * 客户端测试类 * * @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)); } } ~~~ ##三、总结 封装基类状态的行为,并将行为委托到当前状态。