我的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


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


          網站導航:
           
          主站蜘蛛池模板: 寿光市| 淳安县| 黄山市| 博湖县| 定襄县| 衡阳县| 成武县| 耿马| 龙泉市| 汽车| 肃南| 七台河市| 武城县| 增城市| 璧山县| 安宁市| 健康| 类乌齐县| 陇西县| 长武县| 沈丘县| 石狮市| 象山县| 凤庆县| 惠东县| 磐石市| 肥乡县| 嘉禾县| 甘南县| 翼城县| 万年县| 永胜县| 九龙城区| 九江县| 庆城县| 乌鲁木齐县| 应城市| 淳化县| 丰宁| 龙里县| 安龙县|