您的位置:首页 > 编程语言 > Java开发

Java设计模式菜鸟系列(十三)建模和实现状态模式

2015-09-20 20:52 856 查看
转载请注明出处:/article/1330862.html

状态模式(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));
}
}


三、总结

封装基类状态的行为,并将行为托付到当前状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: