我的Java方面博客

          天下難事必做于易,天下大事必做于細

          常用鏈接

          統計

          最新評論

          重構-保護

          重構前的代碼,使用字符串處理狀態
          package org.zsk.refact;

          public class SystemPermission {
              
          private String state;
              
          private boolean granted;
              
              
          public final static String REQUESTED = "REQUESTED"
              
          public final static String CLAIMED = "CLAIMED";
              
          public final static String DENIED = "DENIED";
              
          public final static String GRANTED = "GRANTED";

              
          public SystemPermission() {
                  
          // TODO Auto-generated constructor stub
                  state = REQUESTED;
                  granted 
          = false;
              }

              
              
          public void claimed(){
                  
          if (state.equals(REQUESTED)){
                      state 
          = CLAIMED;
                  }

              }

              
              
          public void denied(){
                  
          if (state.equals(CLAIMED))
                  state 
          = DENIED;
              }

              
              
          public void granted(){
                  
          if (state.equals(CLAIMED)){
                      state 
          = GRANTED;
                      granted 
          = true;
                  }

              }

              
              
          public boolean isGranted(){
                  
          return granted;
              }

              
              
          public String getState(){
                  
          return state;
              }


              
          /**
               * 
          @param args
               
          */

              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  SystemPermission permission = new SystemPermission();
                  System.out.println(permission.getState());
                  
                  
              }


          }


          重構后的代碼,使用類來保護狀態不會被吳改。
          package org.zsk.refact;

          public class SystemPermissionRf1 {
                  
          private boolean granted;
                  
          private PermissionState permission;
                  
          //        public final static String REQUESTED = "REQUESTED"; 
          //        public final static String CLAIMED = "CLAIMED";
          //        public final static String DENIED = "DENIED";
          //        public final static String GRANTED = "GRANTED";

                  
          public SystemPermissionRf1() {
                      setState(PermissionState.REQUESTED);
                      granted 
          = false;
                  }

                  
                  
          public void claimed(){
                      
          if (getState().equals(permission.REQUESTED)){
                          setState(permission.CLAIMED);
                      }

                  }

                  
                  
          public void denied(){
                      
          if (getState().equals(permission.CLAIMED)){
                          setState(permission.DENIED);
                      }

                  }

                  
                  
          public void granted(){
                      
          if (getState().equals(permission.CLAIMED)){
                          setState(permission.GRANTED);
                          granted 
          = true;
                      }

                  }

                  
                  
          public boolean isGranted(){
                      
          return granted;
                  }

                  
                  
          private void setState(PermissionState permission){
                      
          this.permission = permission;
                  }

                  
                  
          public String getState(){
                      
          return permission.toString();
                  }


                  
                  
          /**
                   * 
          @param args
                   
          */

                  
          public static void main(String[] args) {
                      
          // TODO Auto-generated method stub
                      SystemPermissionRf1 permission1 = new SystemPermissionRf1();
                      System.out.println(permission1.getState());
                      
                      
                  }

                  
                  
          }





          package org.zsk.refact;


          public final class PermissionState{
              
          private final String name;
              
              PermissionState(String name)
          {
                  
          this.name = name;
              }

              
              
          public String toString(){
                  
          return name;
              }

              
              
          public final static PermissionState REQUESTED = new PermissionState("REQUESTED");
              
          public final static PermissionState CLAIMED = new PermissionState("CLAIMED");
              
          public final static PermissionState DENIED = new PermissionState("DENIED");
              
          public final static PermissionState GRANTED = new PermissionState("GRANTED");
          }
              

          posted on 2007-09-14 13:17 張樹坤 閱讀(201) 評論(0)  編輯  收藏 所屬分類: Java


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


          網站導航:
           
          主站蜘蛛池模板: 太仆寺旗| 建昌县| 类乌齐县| 大田县| 宝山区| 天峨县| 平和县| 三江| 雅江县| 南宫市| 古浪县| 师宗县| 舟曲县| 交口县| 平顺县| 葫芦岛市| 宜阳县| 彭水| 凤冈县| 重庆市| 灵丘县| 林甸县| 铜陵市| 五寨县| 中宁县| 唐河县| 漯河市| 林西县| 从江县| 建始县| 南昌市| 湟中县| 太仓市| 防城港市| 汕尾市| 清徐县| 香格里拉县| 富源县| 兴城市| 蚌埠市| 栾川县|