优点:
① 将与特定状态相关的行为局部化,并且将不同状态的行为分割开。
缺点:
① 可能出现大量状态类。
适用范围:
当一个对象的行为取决于他的状态,而且他必须在运行时刻根据状态改变他的行为,就要考虑此模式。
一个操作中含有庞大的分支机构,并且这些分支决定于对象的状态。
客户端:
Work work = new Work();//初始化给work状态赋值
work.setHour(9); //给work时间赋值
work.writeProgram(); //判断现状
work.setHour(19); //给work时间赋值
work.setFinsh(true); //打断的事件,工作完成即可下班,不必再继续加班
work.writeProgram(); //判断现状
一句话概括:
根据不同的工作时间,自动切换显示不同的状态,如上午精神,下午疲惫等
/** * State (状态是抽象类) * ForenoonState NoonState AfternoonState EveningState RestState SleepState -- 基本按时间段顺序固定排序 * (各自实例化State,根据时间范围及相关条件来判断是否处于当前状态,若不是,则转入下一个时间段的状态。) * * Work (设置开始状态、设置时间、进入序列判断显示现状等方法) * */