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

隨筆 - 181  文章 - 15  trackbacks - 0
<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿(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 閱讀(204) 評論(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>
            欧美福利视频网站| 亚洲精品久久7777| 免费日韩成人| 久久狠狠久久综合桃花| 亚洲女优在线| 久久国产精品一区二区| 欧美一区二区三区四区夜夜大片 | 亚洲高清久久| 久久综合激情| 欧美成在线视频| 亚洲欧洲日产国产网站| 日韩亚洲视频在线| 亚洲天堂久久| 久久精品免费电影| 你懂的国产精品永久在线| 欧美国产日韩精品| 欧美三级视频在线观看| 99在线精品视频| 一本久久青青| 欧美一级视频一区二区| 久久精品国产99精品国产亚洲性色 | 嫩草影视亚洲| 日韩视频在线观看| 午夜亚洲精品| 乱人伦精品视频在线观看| 亚洲国产精品123| 亚洲欧美精品| 蜜臀久久久99精品久久久久久 | 精品999日本| 野花国产精品入口| 欧美一区二区日韩| 欧美激情视频在线播放 | 久久另类ts人妖一区二区| 欧美精品在线观看| 国产自产女人91一区在线观看| 亚洲乱码日产精品bd| 久久久噜噜噜久久久| 亚洲精品国产无天堂网2021| 亚洲欧美在线高清| 欧美日韩国产页| 黑人极品videos精品欧美裸| 一区二区av在线| 欧美jizzhd精品欧美喷水| 亚洲午夜三级在线| 欧美精品电影| 亚洲福利小视频| 欧美在线欧美在线| 国产精品影音先锋| 99精品国产在热久久| 模特精品在线| 久久国产精品久久久久久| 国产欧美日韩另类一区| 宅男精品视频| 亚洲欧洲另类国产综合| 久久综合伊人77777| 国产亚洲成av人在线观看导航| 亚洲一区二区综合| 一本色道**综合亚洲精品蜜桃冫| 欧美va天堂在线| 亚洲精品四区| 亚洲国产成人在线视频| 美女精品自拍一二三四| 亚洲福利av| 亚洲国产精品美女| 欧美精品手机在线| 在线综合亚洲| 一个色综合导航| 欧美天堂亚洲电影院在线观看| 日韩视频中文字幕| 一卡二卡3卡四卡高清精品视频| 美女脱光内衣内裤视频久久影院 | 这里只有视频精品| 欧美日韩国产页| 亚洲欧美日韩天堂| 亚洲视频一区二区| 国产手机视频一区二区| 久久午夜羞羞影院免费观看| 久久成人精品视频| 亚洲国产成人91精品| 欧美国产视频日韩| 欧美日韩二区三区| 欧美一级久久久| 久久国产精品72免费观看| 亚洲国产一区在线| 一个色综合av| 国产在线一区二区三区四区| 欧美电影免费观看高清完整版| 欧美理论片在线观看| 亚洲欧美日韩国产| 久久精品国产精品亚洲综合| 91久久久久久久久久久久久| 亚洲人成毛片在线播放女女| 国产精品夫妻自拍| 免费观看在线综合| 欧美日韩在线观看一区二区| 香蕉久久一区二区不卡无毒影院 | 午夜国产精品影院在线观看| 极品尤物av久久免费看| 亚洲经典三级| 国产一区二区欧美日韩| 欧美多人爱爱视频网站| 国产精品国产| 欧美α欧美αv大片| 欧美日韩精品在线视频| 久久一区二区精品| 国产精品s色| 欧美成人第一页| 国产精品久久久一区二区| 美日韩精品免费| 国产精品伦一区| 亚洲国产成人精品久久| 国产亚洲欧美日韩精品| 亚洲人成人一区二区三区| 国产中文一区二区三区| 亚洲免费成人av| 在线高清一区| 性18欧美另类| 亚洲综合日韩| 欧美极品欧美精品欧美视频| 久久美女性网| 国产欧美精品在线| 一区二区免费在线观看| 亚洲精品一区二区三区福利| 久久av资源网| 欧美一区二区三区免费看| 欧美日韩一卡| 亚洲日韩成人| 亚洲精品一级| 欧美91福利在线观看| 影音先锋久久久| 午夜视频精品| 欧美一级片一区| 欧美午夜视频在线| 亚洲国产免费看| 亚洲精品日韩在线观看| 免费观看日韩| 国产精品va| 一本久道久久综合婷婷鲸鱼| 日韩视频在线一区二区三区| 另类成人小视频在线| 另类av一区二区| 亚洲国产精品传媒在线观看| 久久久久久久久久久久久9999| 欧美亚洲综合在线| 国产日产欧美a一级在线| 亚洲视频中文| 久久国产一区二区三区| 国产日韩欧美自拍| 久久精品国产亚洲精品| 另类人畜视频在线| 亚洲激情成人在线| 理论片一区二区在线| 亚洲成人自拍视频| 亚洲欧洲另类国产综合| 欧美国产在线电影| 在线综合+亚洲+欧美中文字幕| 午夜精品久久99蜜桃的功能介绍| 欧美午夜精品理论片a级按摩| 日韩视频一区二区三区在线播放| 亚洲午夜一区二区| 国产午夜精品一区理论片飘花| 久久狠狠婷婷| 亚洲人午夜精品免费| 欧美亚洲在线播放| 亚洲国产精品精华液2区45| 欧美日本精品在线| 性一交一乱一区二区洋洋av| 久久综合999| 亚洲午夜在线视频| 国产一区二区久久精品| 母乳一区在线观看| 亚洲一线二线三线久久久| 久久久久久高潮国产精品视| 亚洲日韩欧美视频一区| 国产精品a级| 欧美中文字幕久久| 亚洲欧洲美洲综合色网| 性色av一区二区三区在线观看| 伊人久久大香线蕉综合热线| 欧美日韩久久不卡| 久久gogo国模啪啪人体图| 最新国产乱人伦偷精品免费网站| 午夜精品久久久久久99热| 亚洲国产二区| 国产伦精品一区二区三区免费 | 欧美三区美女| 久久精品国产亚洲一区二区三区| 亚洲精选一区| 裸体女人亚洲精品一区| 亚洲欧美影院| 亚洲免费av片| 亚洲国产mv| 国产一区二区三区视频在线观看| 欧美高清视频www夜色资源网| 午夜精彩视频在线观看不卡| 亚洲欧洲一区二区三区久久| 巨乳诱惑日韩免费av| 欧美一区二区三区免费观看 | 毛片一区二区| 亚洲欧美日韩精品久久奇米色影视|