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

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

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

    離弦之Ray

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

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

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

    前面的 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 例子完美地體現了以上三個 Principles

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

    ?

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

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

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

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

    ?

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

    書里面給出了答案。

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

    ?

    現在的 Duck 父類已經變了,里面有兩個私有變量 FlyBehavior fb, QuackBehavior qb

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

    ?

    小小的一個例子已經分析的那么專業,讓我受益匪淺。好書!

    ?

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

    Feedback

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

    主站蜘蛛池模板: 亚洲一区二区三区91| 亚洲AV无码专区亚洲AV伊甸园| 亚洲精品乱码久久久久久下载| 久久性生大片免费观看性| 国产伦一区二区三区免费| 日韩色日韩视频亚洲网站 | 亚洲av日韩aⅴ无码色老头| 女人18毛片特级一级免费视频| 亚洲精品天堂在线观看| 精品久久久久久久免费加勒比| 亚洲6080yy久久无码产自国产| 日本免费高清一本视频| 日韩电影免费在线观看网址| 亚洲中文字幕无码一区二区三区| 国产免费A∨在线播放| 亚洲国产精品一区第二页 | yellow视频免费在线观看| 国产亚洲AV夜间福利香蕉149| 青青操视频在线免费观看| 亚洲avav天堂av在线不卡| 2021在线永久免费视频| 亚洲精品亚洲人成在线| 亚洲国产成人久久笫一页| 在线看片免费人成视频播| 亚洲今日精彩视频| 久久不见久久见免费影院| 在线观看亚洲免费| 亚洲人成色7777在线观看| 最近中文字幕mv免费高清在线| 亚洲国产视频久久| 亚洲无码精品浪潮| 亚洲免费在线观看视频| 日本亚洲中午字幕乱码| 亚洲一区AV无码少妇电影☆| 蜜桃AV无码免费看永久| 美女尿口扒开图片免费| 久久久亚洲欧洲日产国码aⅴ | 久久精品免费一区二区| 久久久久亚洲精品无码网址色欲| 亚洲色成人中文字幕网站| 在线看片v免费观看视频777|