我的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 張樹坤 閱讀(205) 評論(0)  編輯  收藏 所屬分類: Java


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


          網站導航:
           
          主站蜘蛛池模板: 山丹县| 西峡县| 龙胜| 嘉兴市| 留坝县| 栾川县| 河间市| 高邮市| 樟树市| 宜章县| 化州市| 武城县| 益阳市| 荥阳市| 济南市| 合肥市| 图片| 西吉县| 炉霍县| 吴川市| 石狮市| 佛学| 中方县| 兰考县| 鹿泉市| 东丽区| 伊宁县| 马鞍山市| 富裕县| 会东县| 辽中县| 麻城市| 朝阳区| 平湖市| 双流县| 平利县| 河东区| 元氏县| 额尔古纳市| 马龙县| 平谷区|