状态模式
状态模式解决的问题:状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。
案例:工作状态的变化
源代码:
package org.zangyu.state;
public class State {
public static void main(String[] args) {
// TODO Auto-generated method stub
Work ep =new Work();
ep.setHour(9);
ep.WriteProgram();
ep.setHour(10);
ep.WriteProgram();
ep.setHour(15);
ep.WriteProgram();
ep.setFinish(false);
ep.setHour(22);
ep.WriteProgram();
ep.setHour(24);
ep.WriteProgram();
}
}
class Work{
//钟点
private int hour;
//任务完成
private boolean finish =true;
public int getHour(){
return hour;
}
public boolean isFinish() {
return finish;
}
public void setFinish(boolean finish) {
this.finish = finish;
}
public void setHour(int hour) {
this.hour = hour;
}
public void WriteProgram()
{
if(finish) {
System.out.println("当前时间:"+hour+"点,下班回家了");
}
else {
if(hour<21) {
System.out.println("当前时间:"+hour+"点,加班");