package stateMode;/* * 加班状态类  普通模式实现 *  *  * 这就是活生生的面向过程啊  那要java何用!! 让面向对象怎么看。。。 */public class Commonly {public static void main(String[] args) {hour = 9;Work();hour = 10;Work();hour = 12;Work();hour = 13;Work();hour = 14;Work();//完成工作hour = 17;isFinished = true;Work();hour = 19;Work();hour = 22;Work();//没完成工作hour = 17;isFinished = false;Work();hour = 19;Work();hour = 22;Work();}//标记时间点static int hour = 0;//标记工作是否完成static boolean isFinished = false;/* * 工作方法 */public static void Work(){if(hour < 12){System.out.println("当前时间"+hour+"点   上午工作,精神百倍");}else if(hour < 13){System.out.println("当前时间"+hour+"点   饿了 午饭 犯困 午休");}else if(hour < 17){System.out.println("当前时间"+hour+"点   下午状态还行");}else {if(isFinished){System.out.println("当前时间"+hour+"点   下班回家");}else{if(hour < 21){System.out.println("当前时间"+hour+"点   加班 加班  疲惫不堪");}else{System.out.println("当前时间"+hour+"点   不行了 要死了");}}}}}
package stateMode;/* * 工作状态 这次最起码来一个面向对象啊 !!  */public class Commonly2 {//时间private int hour;//是否完成工作private boolean isFinished;/* * 方法太长 不是很么好事 *  * 违背了单一职责原则 */public void Work(){if(hour < 12){System.out.println("当前时间"+hour+"点   上午工作,精神百倍");}else if(hour < 13){System.out.println("当前时间"+hour+"点   饿了 午饭 犯困 午休");}else if(hour < 17){System.out.println("当前时间"+hour+"点   下午状态还行");}else {if(isFinished){System.out.println("当前时间"+hour+"点   下班回家");}else{if(hour < 21){System.out.println("当前时间"+hour+"点   加班 加班  疲惫不堪");}else{System.out.println("当前时间"+hour+"点   不行了 要死了");}}}}public int getHour() {return hour;}public void setHour(int hour) {this.hour = hour;}public boolean isFinished() {return isFinished;}public void setFinished(boolean isFinished) {this.isFinished = isFinished;}public static void main(String[] args) {Commonly2 commonly2 = new Commonly2();commonly2.setHour(9);commonly2.Work();commonly2.setHour(10);commonly2.Work();commonly2.setHour(12);commonly2.Work();commonly2.setHour(13);commonly2.Work();commonly2.setHour(14);commonly2.Work();//工作完成commonly2.setFinished(true);commonly2.setHour(17);commonly2.Work();commonly2.setHour(19);commonly2.Work();commonly2.setHour(22);commonly2.Work();//工作没完成commonly2.setFinished(false);commonly2.setHour(17);commonly2.Work();commonly2.setHour(19);commonly2.Work();commonly2.setHour(22);commonly2.Work();}}





package stateMode;/* * 状态模式 : * 当一个对象的内在状态改变时 允许改变其行为 这个对象看起来像是改变了其类 *  * 状态模式主要解决的是 当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列类中 可以把复杂的判断逻辑简化 *  */public class StateMode {public static void main(String[] args) { Work work = new Work();work.hour = 9;work.Working();work.hour = 10;work.Working();work.hour = 12;work.Working();work.hour = 13;work.Working();work.hour = 14;work.Working();//工作完成/*work.hour = 17;work.isFinished = true;work.Working();work.hour = 19;work.Working();work.hour = 22;work.Working();*///工作未完成work.hour = 17;work.isFinished = false;work.Working();work.hour = 19;work.Working();work.hour = 22;work.Working();     /*     * 这个时候 如果老板强制20点之前要下班的话 只需要在EveningState这个类中修改一下判断条件就行了     */}}/* * 工作类  */class Work{private State current;/* * 构造方法 初始化current 默认早上开始办公 */public Work(){current = new morningState();}//工作时间public int hour;//工作状态public boolean isFinished;/* * 设置当前状态 */public void SetState(State state){current = state;}public void Working(){current.Working(this);}}/* * 状态抽象类 */interface State{public abstract void Working(Work work);}/* * 上午状态 */class morningState implements State{public void Working(Work work) {if(work.hour < 12){System.out.println("当前时间"+work.hour+"点   上午工作,精神百倍");}else{System.out.println("ssssssssssssssss");work.SetState(new NoonState());work.Working();}}}/* * 中午状态 */class NoonState implements State{public void Working(Work work) {if(work.hour < 13){ System.out.println("当前时间"+work.hour+"点   饿了 午饭 犯困 午休");}else{work.SetState(new AfternoonState());work.Working();}}}/* * 下午状态 */class AfternoonState implements State{public void Working(Work work) {if(work.hour < 17){System.out.println("当前时间"+work.hour+"点   下午状态还行");}else{System.out.println("1111111111111111111111");work.SetState(new EveningState());work.Working();}}}/* * 晚上状态 */class EveningState implements State{public void Working(Work work) {if(work.isFinished){work.SetState(new RestState());work.Working();}else{  if(work.hour < 21){System.out.println("当前时间"+work.hour+"点   加班 加班  疲惫不堪");}else{work.SetState(new SleepingState());work.Working();}}}}/* * 下班啊 回家睡觉啊 */class RestState implements State{public void Working(Work work) {System.out.println("当前时间"+work.hour+"点   下班回家");}}/* * 不行了 要猝死了 */class SleepingState implements State{public void Working(Work work) {System.out.println("当前时间"+work.hour+"点   不行了 要死了");}}



©著作权归作者所有:来自51CTO博客作者木子的昼夜的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 18.备忘录模式
  2. vue与react的简单比较(全局状态管理)
  3. MYSQL 最近知识总结(1)
  4. Deemon & CSRF漏洞自动挖掘工具分析
  5. 【11g新特性】DDL_LOCK_TIMEOUT的作用
  6. MySQL主从之master_info_repository与sync_master_info
  7. Docker容器时间跟主机时间保持同步的操作记录
  8. confluence与jira账号对接、查看到期时间及问题总结
  9. Oracle kill session相关问题

随机推荐

  1. 我是这么自学Java的
  2. 腐朽王朝的更迭:谈 SM 系统的技术升级和持
  3. 报表工具,买?自研?
  4. 讲给前端的正则表达式(3):使用 ES6 特性[
  5. 生活中,那至美
  6. 从模版方法模式到 SPI 演变 :好的思想通用
  7. 为什么你的提问总得不到想要的答案?
  8. 松一松身上的"螺丝",可以更舒坦
  9. 25K的996 和 18K的965,你选哪个?
  10. 一文讲透微服务下如何保证事务的一致性