赞
踩
对象的行为依赖于它的状态(属性),可以根据状态的改变而改变相关行为。
上午、下午、晚上工作的状态
public class Work { /** * 工作状态 */ private State state; /** * 当前时间 */ private int hour; /** * 工作是否完成 */ private boolean isFinished; public Work() { // 初始化操作 this.state = new MorningState(); } public void writeProgram() { state.writeProgram(this); } public State getState() { return state; } public void setState(State state) { this.state = state; } public int getHour() { return hour; } public void setHour(int hour) { this.hour = hour; } public boolean isFinished() { return isFinished; } public void setFinished(boolean finished) { isFinished = finished; } }
public interface State {
void writeProgram(Work work);
}
public class MorningState implements State {
@Override
public void writeProgram(Work work) {
if (work.getHour() < 12) {
System.out.println("当前时间:" + work.getHour() + ",干劲十足!");
} else {
work.setState(new NoonState());
work.writeProgram();
}
}
}
public class NoonState implements State {
@Override
public void writeProgram(Work work) {
if (work.getHour() < 13) {
System.out.println("当前时间:" + work.getHour() + ",好饿,开始干饭!");
} else {
work.setState(new AfternoonState());
work.writeProgram();
}
}
}
public class AfternoonState implements State {
@Override
public void writeProgram(Work work) {
if (work.getHour() < 18) {
System.out.println("当前时间:" + work.getHour() + ",开始上班,有点疲惫!");
} else {
work.setState(new EveningState());
work.writeProgram();
}
}
}
public class EveningState implements State {
@Override
public void writeProgram(Work work) {
if (!work.isFinished()) {
System.out.println("当前时间:" + work.getHour() + ",又要加班");
} else {
System.out.println("当前时间:" + work.getHour() + ",下班啦!");
}
}
}
public class Main { public static void main(String[] args) { Work work = new Work(); // 上午 work.setHour(9); work.writeProgram(); // 中午 work.setHour(12); work.writeProgram(); // 下午 work.setHour(16); work.writeProgram(); // 晚上 work.setHour(18); // work.setFinished(true); work.writeProgram(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。