java學習

          java學習

           

          設計模式之狀態(tài)模式

          現(xiàn)在寫一個用狀態(tài)模式實現(xiàn)的根據(jù)上班時間狀態(tài)變化而行為變化的小程序,當時間<12上午上班時間,
          <13午休時間,<17下午上班時間,<21加班時間,根據(jù)時間不同,條用的類方法不同。
          狀態(tài)模式適用于當對象的狀態(tài)改變時,行為也改變,就可以使用狀態(tài)模式
          狀態(tài)接口:
          public interface State {
          void writeProgram(Work work);
          }
          不同的實現(xiàn)類:

          public class AfterNoonState implements State {

           @Override
           public void writeProgram(Work work) {
            if(work.getHour()<17){
             System.out.println("工作");
            }else {
             work.setCurrent(new EveningState());
             work.writeProgram();
            }

           }

          }


          public class EveningState implements State {

           @Override
           public void writeProgram(Work work) {
           if(work.isFinish()){
            work.setCurrent(new RestState());
            work.writeProgram();
           }else {
            if(work.getHour()<21){
             System.out.println("加班");
            }else {
             work.setCurrent(new SleepState());
             work.writeProgram();
            }
           }

           }

          }


          public class ForenoonState implements State {

           @Override
           public void writeProgram(Work work) {
           if(work.getHour()<12){
            System.out.println("工作時間");
           }else {
           work.setCurrent(new NoonState()); 
           work.writeProgram();
           }
            
           }

          }


          public class NoonState implements State {

           @Override
           public void writeProgram(Work work) {
            if(work.getHour()<13){
             System.out.println("午睡");
            }else {
             work.setCurrent(new AfterNoonState());
             work.writeProgram();
            }

           }

          }


          public class RestState implements State {

           @Override
           public void writeProgram(Work work) {
            System.out.println("回家");

           }

          }


          public class SleepState implements State {

           @Override
           public void writeProgram(Work work) {
            System.out.println("睡覺");

           }

          }


          調用狀態(tài)的類:

          public class Work {
          private State current;

           public Work(double hour,boolean finish){
           current = new ForenoonState();
           this.hour = hour;
           this.finish = finish;
          }
          private double hour;
          public double getHour() {
           return hour;
          }

          public State getCurrent() {
           return current;
          }
          public void setCurrent(State current) {
           this.current = current;
          }
          private boolean finish;
          public boolean isFinish() {
           return finish;
          }

          public void writeProgram(){
           current.writeProgram(this);
          }
          }


          測試類:
          public class Test {
          public static void main(String[] args) {
           Work work = new Work(20, true);
           work.writeProgram();
          }
          }

          posted on 2013-05-06 14:24 楊軍威 閱讀(175) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          導航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 平和县| 宝兴县| 微博| 禹城市| 安国市| 永德县| 固镇县| 荥经县| 墨竹工卡县| 郧西县| 扎囊县| 莱阳市| 南丰县| 沂水县| 霞浦县| 齐齐哈尔市| 旺苍县| 灵山县| 南澳县| 宁乡县| 红安县| 余干县| 巴林右旗| 凉城县| 托克逊县| 加查县| 垦利县| 祁连县| 商洛市| 临湘市| 河北区| 怀远县| 通城县| 长武县| 扎鲁特旗| 高安市| 平舆县| 福贡县| 井陉县| 通河县| 于都县|