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

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

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

    離弦之Ray

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

    Head first design patterns 一直被束之高閣,總算考完期末考試。然而,我卻又要開始復習考研的東西了,整天看數(shù)學看的十分頭暈,把這本書重新拿來看,權(quán)當連環(huán)畫來看。

    以前已經(jīng)看過兩章了,實在太過久遠,只得重溫一下。

    前面的 Introduction 其實是非常有意思的,在這先不贅述了。

    ?

    介紹的第一個 Pattern Strategy Pattern

    通過一個 duck 的例子,在講述 Strategy Pattern 的過程中引出了三個 Design Principles

    它們是:

    1.????????????? Identify the aspects of your application that vary and separate them from what stays the same.

    2.????????????? Program to an interface, not an implementation.

    3.????????????? Favor composition over inheritance.

    Duck 例子完美地體現(xiàn)了以上三個 Principles

    一開始 Duck 類是這樣的,里面有三個方法: quack(), swim() display(), 其它一些特殊的 Duck 子類繼承這個父類,并重載 display 方法去顯示各種不同種類的 Duck

    ?

    現(xiàn)在需求變更,需要讓一些 Duck 能夠有飛的能力,理所當然地,在父類中加上了 fly() 這個方法。但一些不能飛的 Duck 類卻同時擁有了 fly() 方法,這顯然是不對的。

    可能有人提出解決的方法是重載那些不需要 fly() 方法的 duck 類的 fly() ,讓這個方法什么也不做,但你有沒有想過如果這么處理,以后再加一些不需要一些方法的子類是不是很繁瑣?

    也許又有人想到了,把 fly() quack() 提取出來,編程 interface 。如果某個子類需要這個能力可以去 implement 這個 interface

    有沒有想過后果?每一個子類都要重寫 fly() quack(),OO 的代碼重用的特性蕩然無存。

    ?

    那什么才是最好的解決之道呢???

    書里面給出了答案。

    fly() quack() 兩個功能提取出來這個思路是對的。這里體現(xiàn)了第一個 Principle 。首先聲明 FlyBehavior() QuackBehavior() 兩個 interface ,然后實現(xiàn)各種 fly quack ,比如 FlyWithWings, FlyNoWay Quack, Squeak 等等。這里體現(xiàn)了第二個 Principle

    ?

    現(xiàn)在的 Duck 父類已經(jīng)變了,里面有兩個私有變量 FlyBehavior fb, QuackBehavior qb

    Duck 父類甚至可以直接聲明成 Abstract 類,當有子類繼承它的時候,可以在構(gòu)造函數(shù)里給 fb qb 初始化的時候直接賦給它需要的 fly quack 種類。這里體現(xiàn)了第三個 Principle

    ?

    小小的一個例子已經(jīng)分析的那么專業(yè),讓我受益匪淺。好書!

    ?

    posted on 2006-07-06 14:17 離弦之ray的技術(shù)天空 閱讀(302) 評論(1)  編輯  收藏 所屬分類: Design Pattern

    Feedback

    # re: the first pattern 2006-08-12 00:24 icepv
    是decorator模式吧。
    講得不錯  回復  更多評論
      

    主站蜘蛛池模板: 日韩免费高清视频| 国产精品久久久久影院免费| 最新国产AV无码专区亚洲| 亚洲av中文无码字幕色不卡| 日韩版码免费福利视频| 亚洲综合成人婷婷五月网址| 久久不见久久见免费影院| 亚洲真人无码永久在线观看| 国产麻豆免费观看91| 国产亚洲综合视频| 在线观看亚洲成人| 日韩在线不卡免费视频一区| 亚洲国产精品久久久久| 黄色成人免费网站| 亚洲午夜福利在线视频| 免费一看一级毛片| 叮咚影视在线观看免费完整版| 亚洲伦另类中文字幕| 成人浮力影院免费看| 亚洲色偷偷综合亚洲AV伊人蜜桃| 国产精品国产午夜免费福利看| 一级做a爱过程免费视频高清| 亚洲综合av永久无码精品一区二区 | 久久国产精品2020免费m3u8| 亚洲精品一区二区三区四区乱码| 久久精品网站免费观看| 污污污视频在线免费观看| 亚洲人成在线播放网站| 999国内精品永久免费观看| 亚洲av无码成人精品国产| 国外亚洲成AV人片在线观看| 99爱视频99爱在线观看免费| 亚洲一卡2卡3卡4卡5卡6卡| 久久久久亚洲av成人无码电影| 今天免费中文字幕视频| 亚洲国产AV无码一区二区三区 | 成年性生交大片免费看| 久久久久国色AV免费观看| 亚洲制服丝袜第一页| 亚洲综合另类小说色区色噜噜| 最近2019中文字幕免费直播|