狀態模式(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);
}
}
/**
* 客戶端測試類
*
* @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設計模式博客全目錄