<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    andy's blog

    記錄我的所做所思

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      1 Posts :: 13 Stories :: 0 Comments :: 0 Trackbacks
    1:case context:
    ?現設計一個關于鴨子的系統,一個抽象類Duck,方法為quack(),swim(),abstract display()(具體子?? 類實現)。現需求為有部分類型的鴨子可以fly(),如何實現。
    ?? a:繼承:把fly()提到Duck類中,可實現代碼復用。
    ???????????????? 問題:違反繼承原則,父類的方法必須是所有子類都具有的行為,代碼維護 時如加入一? 種新類 型木頭鴨就沒有fly()行為。

    ? b:接口:寫一個flyable接口,所有有fly()行為的鴨子都實現這個接口。
    ??????????????? 問題:不能實現代碼復用。
    ??
    2: 重新分析:
    ??? fly()行為不是每個子類都有,fly()的具體實現可能會變化(有的是用翅膀飛行,有的是滑行, 或是其它沒有發現的方法,總之它是會變的(change,add))。
    ??? Design Principal:Identify the aspects of your application that vary and seperate them from what stays the same。
    ??? (take the parts that vary and encapsulate them,so that later you can alter and extend the parts that vary without affecting those don't?)
    ?? 解決方法:
    ????????? 寫FlyBehavior接口,和兩個實現類FlyWithWings和FlyNoWay,這樣把Fly的行為從duck類的內部提了出來,我們可以修改和增加行為而不影響其它代碼。
    ????????? 把FlyBehavior實例作為Duck的屬性,子類構造時可以通過new FlyBehavior的實現類設置此屬性,(因為FlyBehavior是接口,我們可以在Runtime 改變它),然后在Duck寫performFly()實現方法為代理flyBehavior.fly()。
    ??? Design Principal:Favor composition than inheirtance.
    ??? (1:change behavior at runtime.2:encapsulate a family of algorithms into their own classes)

    ?? Strategy pattern: define a family of algorithms,encapsulates each one,and make them interchangeable. Strategy lets the algorithm vary independently from the client that use it.

    3:現實應用:
    ?? 圖書打折計算:有多種打折策略,折扣可能會變動或增加。
    ?? 排序系統:先寫出各種排序實現,根據情況動態選擇排序策略。?
    posted on 2006-03-27 16:24 zhoumin 閱讀(75) 評論(0)  編輯  收藏 所屬分類: 設計模式

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


    網站導航:
     
    主站蜘蛛池模板: 一本到卡二卡三卡免费高| 国产亚洲精品AA片在线观看不加载 | 在线a亚洲v天堂网2019无码| 日本亚洲成高清一区二区三区 | 香蕉高清免费永久在线视频| 亚洲五月午夜免费在线视频| 亚洲伊人久久精品| 免费人成在线观看播放a| 青娱分类视频精品免费2| 亚洲无人区午夜福利码高清完整版| 亚洲深深色噜噜狠狠网站| 国产永久免费高清在线| 四虎影视精品永久免费网站| 亚洲熟妇色自偷自拍另类| 久久免费视频一区| 日本二区免费一片黄2019| 亚洲一级免费毛片| 午夜影院免费观看| 国产亚洲人成网站观看| 黄色大片免费网站| 日本免费一区二区三区最新vr| 亚洲码和欧洲码一码二码三码| 久久ww精品w免费人成| 国产亚洲精品精品国产亚洲综合| 一级特黄特色的免费大片视频| 亚洲无人区午夜福利码高清完整版 | 手机在线看永久av片免费| 国产精品久久久亚洲| 99xxoo视频在线永久免费观看| 亚洲伊人久久精品影院| 日韩精品内射视频免费观看| 国产亚洲精品VA片在线播放| 免费中文字幕一级毛片| 狠狠入ady亚洲精品| 久久精品a一国产成人免费网站| 亚洲黄色免费网站| 222www免费视频| 亚洲精品第一国产综合精品| 免费黄色大片网站| baoyu122.永久免费视频| 最新精品亚洲成a人在线观看|