青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 181  文章 - 15  trackbacks - 0
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

My Tech blog

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

運用多態(polymorphism)取代與價格相關的條件邏輯
在另一個對象的屬性基礎上運行switch語句,并不是什么好主意。如果不得不使用,也應該在對象自己的數據上而不是在別人的數據上使用。選擇對象之間的傳遞關系的時候,應當考慮選擇將穩定的對象的屬性傳遞給易變的對象(如書中的將租期長度來自Rental(穩定,不易變)傳遞給Movie(不穩定,易變))。
對于類A和類B,如果A中存在因B而變化的屬性或方法體,則將它們移動到B中,A中只保留移動后B暴露給A的接口(或方法)。
終于.......我們來到繼承(inheritance)
此部分包含的重構方法:
Self Encapsulate Field:自封裝域。
Move Method:移動方法。
Replace Conditional with Polymorphism:用多態替換條件選擇。
Replace Type Code with State/Strategy:在這個方法中使用了上面三個方法作為步驟。即用狀態、策略替換代碼,將與類型相依的行為搬移到模式內。在使用它的時候,多使用對于以類型相依的行為進行Self Encapsulate Field作為第一步驟。從而確保任何時候都通過getter和setter兩個函數來運行這些行為。第二步通常采用Move Method方法,即把代碼從超類的宿主中搬移到子類中去。第三步采用Replace Conditional with Polymorphism方法,將switch,if等條件分支語句轉變為多態形式。
下面是一個小實驗:
一、重構之前的代碼:

public class ClassA {
    
public int getValue(TheType type)
    {
        
switch(type)
        {
        
case SmallValue:return 100;
        
case MidValue:return 200;
        
case BigValue:return 300;
        
default:return 0;
        
        }
    }
    
    
public static void main(String args[])
    {
        ClassA instanceA
=new ClassA();
        System.out.println(
"theValueIs:"+instanceA.getValue(TheType.SmallValue));
    }
}

應用Self Encapsulate Field之后的效果:

public class ClassAModified {

    
/**
     * 
@param args
     
*/
    
public TheValue _theValue;
    
public int getValue(TheType type)
    {
        
switch(type)
        {
        
case SmallValue:return 100;
        
case MidValue:return 200;
        
case BigValue:return 300;
        
default:return 0;
        
        }
    }

        
    
public TheValue get_theValue() {
        
return _theValue;
    }

    
public void set_theValue(TheType type) {
            }
        
}
public class TheValue
    {
    
    }
        

應用Move Method之后的效果:

public class ClassAModified {

    
/**
     * @param args
     
*/
    
public TheValue _theValue;
    
public int getValue(TheType type)
    {
        
return _theValue.getValue(type);
    }

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub

    }
    
    
public TheValue get_theValue() {
        
return _theValue;
    }

    
public void set_theValue(TheType type) {
        _theValue
=new TheValue();
    }
    
public class TheValue
    {
        
public int getValue(TheType type)
        {
            
switch(type)
            {
            
case SmallValue:return 100;
            
case MidValue:return 200;
            
case BigValue:return 300;
            
default:return 0;
            
            }
        }
    }
    

}

 應用Replace Conditional with Polymorphism之后的效果:

public class ClassAModified {

    
/**
     * @param args
     
*/
    
public TheValue _theValue;
    
public int getValue(TheType type)
    {
        
return _theValue.getValue();
    }

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub

    }
    
    
public TheValue get_theValue() {
        
return _theValue;
    }

    
public void set_theValue(TheType type) {
        
switch(type)
        {
            
case SmallValue:_theValue= new SmallValue();
            
case MidValue:_theValue= new MidValue();
            
case BigValue:_theValue= new BigValue();
            
default:_theValue=new TheValue();
        
        }
    }
    
public class TheValue
    {
        
public int getValue()
        {
            
return 0;
        }
    }
    
public class SmallValue extends TheValue
    {
        
public int getValue()
        {
            
return 100;
        }
    }
    
public class MidValue extends TheValue
    {
        
public int getValue()
        {
            
return 200;
        }
    }
    
public class BigValue extends TheValue
    {
        
public int getValue()
        {
            
return 300;
        }
    }

}

結語
重構的節奏:測試、小修改、測試、小修改、測試、小修改。。。
正是這種節奏讓重構得以快速而安全的前進。
 


 

posted on 2007-06-20 21:42 littlegai 閱讀(206) 評論(0)  編輯 收藏 引用 所屬分類: 我的讀書筆記
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲久色影视| 亚洲综合首页| 在线成人av| 亚洲一区二区精品| 一区二区免费在线观看| 久久综合激情| 久久这里只有| 国产日韩精品一区二区浪潮av| 日韩一级黄色大片| 亚洲精品一区二| 欧美v日韩v国产v| 免费在线看一区| 极品少妇一区二区| 欧美伊人久久久久久久久影院 | 亚洲成人资源网| 小处雏高清一区二区三区| 亚洲欧美日韩另类| 欧美性片在线观看| 99视频超级精品| 一区二区三区欧美日韩| 欧美激情中文字幕一区二区| 亚洲国产精品99久久久久久久久| 在线播放中文字幕一区| 久久香蕉国产线看观看网| 奶水喷射视频一区| 亚洲激情在线观看视频免费| 老司机精品导航| 欧美电影在线观看完整版| 亚洲第一精品久久忘忧草社区| 久久久久久久波多野高潮日日 | 亚洲第一黄色网| 亚洲黄一区二区| 欧美大片第1页| 亚洲美女av电影| 亚洲女爱视频在线| 国产美女精品一区二区三区| 欧美在线日韩| 欧美成年人视频| 亚洲精品影院| 国产精品第一页第二页第三页| 亚洲午夜羞羞片| 久久久精品国产99久久精品芒果| 狠狠色伊人亚洲综合网站色| 免费亚洲电影在线观看| 日韩视频中文字幕| 久久se精品一区精品二区| 尤物精品在线| 欧美日韩国产91| 午夜精品久久久久久久白皮肤| 久久夜色精品国产欧美乱| 亚洲黄一区二区三区| 欧美视频一区二区| 午夜影院日韩| 亚洲国产精品一区二区www在线| 亚洲网站视频| 激情另类综合| 欧美日韩中文字幕在线视频| 午夜精品理论片| 亚洲国产一区二区三区青草影视 | 欧美影院午夜播放| 欧美激情一区二区三区蜜桃视频 | 久久爱另类一区二区小说| 欧美高清一区| 欧美亚洲视频在线观看| 亚洲国产精品成人| 国产精品丝袜久久久久久app| 久久色中文字幕| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美a一区二区| 欧美亚洲一区| 一区二区三区欧美在线| 国产综合网站| 国产精品欧美日韩一区二区| 久热综合在线亚洲精品| 亚洲免费视频成人| 亚洲精品中文字幕有码专区| 久久久999精品免费| 亚洲视频大全| 亚洲国产小视频| 国产亚洲aⅴaaaaaa毛片| 欧美日韩国产首页在线观看| 久久天天综合| 午夜国产精品视频免费体验区| 亚洲人成网站999久久久综合| 久久深夜福利| 久久精品国亚洲| 午夜精品久久久久久久久久久久久 | 国产九九精品视频| 欧美日本簧片| 欧美激情一区二区三区| 久久蜜臀精品av| 久久av红桃一区二区小说| 亚洲一级黄色片| 一本色道久久综合亚洲精品不卡| 亚洲国产第一| 欧美激情精品久久久久久变态| 久久综合精品国产一区二区三区| 性欧美xxxx视频在线观看| 亚洲女优在线| 亚洲一区二区三区中文字幕在线| 亚洲精品中文在线| 亚洲精品影院| 日韩一二三区视频| 99亚洲精品| 一区二区三区产品免费精品久久75 | 欧美大片91| 欧美国产高清| 亚洲国产高清在线观看视频| 欧美国产大片| 91久久精品国产91久久性色| 亚洲日本中文字幕| 亚洲毛片在线观看| 国产精品99久久99久久久二8| 日韩一区二区精品| 亚洲视频大全| 欧美亚洲免费高清在线观看| 香蕉av777xxx色综合一区| 欧美一级欧美一级在线播放| 久久国产精品一区二区| 久久在线免费观看| 欧美大学生性色视频| 欧美日韩精品系列| 国产精品永久| 在线观看中文字幕不卡| 亚洲人妖在线| 亚洲欧美日韩精品| 久久av在线| 欧美高清影院| 一区二区三区视频在线看| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲精品一区二区三区av| 亚洲九九精品| 午夜精品一区二区三区在线播放| 欧美在线视频a| 欧美国产1区2区| 99这里只有精品| 欧美在线免费视频| 欧美国产日韩一区二区| 欧美视频一区二区| 国产综合久久久久影院| 亚洲激情另类| 新片速递亚洲合集欧美合集| 久热re这里精品视频在线6| 亚洲人成亚洲人成在线观看| 亚洲欧美在线视频观看| 欧美成人免费在线观看| 国产精品日韩一区二区三区| 在线日韩成人| 亚洲免费影视第一页| 女人香蕉久久**毛片精品| 亚洲视频在线观看三级| 久久蜜桃香蕉精品一区二区三区| 欧美精品色综合| 黑人极品videos精品欧美裸| 一区二区黄色| 蜜臀a∨国产成人精品| 亚洲视频 欧洲视频| 欧美sm重口味系列视频在线观看| 国产精品一区二区久久久| 亚洲狼人精品一区二区三区| 久久伊人一区二区| 亚洲五月婷婷| 欧美国产日韩xxxxx| 韩日精品视频| 午夜精品视频在线观看一区二区| 亚洲国产成人久久综合一区| 久久国产夜色精品鲁鲁99| 国产精品区一区二区三| 日韩视频在线观看| 欧美国产国产综合| 久久精品99国产精品酒店日本| 国产精品久久一区二区三区| 日韩午夜精品| 亚洲福利久久| 蜜桃视频一区| 在线精品亚洲| 久久中文字幕导航| 久久精品国产第一区二区三区最新章节| 欧美三级乱人伦电影| 9色国产精品| 亚洲国产小视频| 欧美大成色www永久网站婷| 亚洲第一二三四五区| 乱中年女人伦av一区二区| 欧美一区二区三区在线观看 | 日韩天堂在线视频| 亚洲电影在线观看| 欧美成人综合在线| 一本久久综合亚洲鲁鲁| 亚洲欧美久久| 亚洲线精品一区二区三区八戒| 欧美日韩亚洲在线| 亚洲网站啪啪| 亚洲一本大道在线| 国产精品日日摸夜夜摸av| 亚洲欧美日韩国产综合精品二区| 一区二区三区四区在线| 国产精品a久久久久| 欧美一区不卡| 先锋影音网一区二区|