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

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

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

    零雨其蒙's Blog

    做優秀的程序員
    隨筆 - 59, 文章 - 13, 評論 - 58, 引用 - 0
    數據加載中……

    零雨其蒙《UML和模式應用》學習筆記(六)

    (零雨其蒙原創 轉載請注明)
    2007
    3 9 日星期五

    ?

    23 迭代 2 :更多模式

    在前面學習用例的時候,已經知道一個用例包含多個場景(主成功場景和擴展場景),由于 UP 倡導的是增量式開發,因此 Larman 給出了一些建議:在多次迭代中對同一用例的不同場景或特性進行工作,并且逐漸地擴展系統以最終實現對所有功能需求的處理。但是,不應該把一個場景分開在多次迭代中處理 , 一次迭代應該完成一個或多個端到端的場景。( P294

    即一個用例可以分多次迭代完成(每次至少完成一個場景),一個場景必須在一次迭代中完成

    ?

    24 快速地更新分析

    P297 使用 UP 的過程成熟標志是 ,知道何時創建制品能夠帶來顯著價值,或是當遇到呆板的“完成作業”式的步驟時能夠較好地略過。

    ?

    ?

    創建子類的準則

    當遇到下列情況時,創建超類的概念子類:

    1) ? 子類具有我們感興趣的額外屬性

    2) ? 子類具有我們感興趣的額外關聯

    3) ? 對子類概念的影響、處理、反應和操作與超類或其他子類有顯著的差異

    ?

    ?

    關于子類和超類的其他準則(這些都是基于領域模型的討論,也就是在分析時觀點)

    準則 :將超類聲明為抽象類。雖然這是與軟件無關的概念觀點,但是也是常用的 OO 準則,即所有軟件超類都是抽象的

    準則 :在子類上附以超類名稱。(如超類是 Square ,則子類名就是 GoSquare RegularSquare 等)

    ?

    ?

    25 GRASP :更多具有職責的對象

    ?

    ?? 在這一章中 larman 介紹了前面沒有介紹過的四個 GRASP 模式:多態、間接性、純虛構和防止變異。經過這章的學習之后, GRASP 9 個模式就學全了 ~ 按照 Larman 的說法,那時我們就擁有了討論設計的豐富、共享的詞匯

    ?

    Polymorphism 多態

    問題: 如何處理基于類型的選擇?如何創建可插拔的軟件構件?

    解決方案: 當相關選擇或行為隨類型(類)有所不同時,使用多態操作為變化的行為類型分配職責。

    推理: 不要測試對象的類型,也不要使用條件邏輯來執行基于類型的不同選擇。

    ?

    多態使我們不再使用條件分支語句來解決條件變化問題,前面在學習 Martin Fowler 的《重構》時我回憶了那個地磅系統中讓人惡心的 case if-else 邏輯程序段,它制造了大量的重復和讓人感到對于業務過程的不解,從我個人的實踐來看,多態可以很好的解決這一問題,因為復雜性被封裝在了超類和子類的繼承關系中——那時我在做一個搜索引擎時,使用多態避免了傳統的使用條件分支語句來處理選擇搜索類別的問題(按商品名稱搜索,按作者搜索等類別),它有兩點好處:一個是簡潔,一個是清楚。可以很輕易的看出其邏輯關系。因此廢棄條件分支語句吧,在 [ 問題 ] Larman 實際上已經給出了使用多態的好處,只不過用的是問句。

    ?

    P305 當對象 A 持續需要對象 B 中的數據時,意味著: 1 )對象 A 不應該持有該數據;或 2 )對象 B 而不是對象 A 應該具有這一職責(基于專家模式)。

    ?

    ?

    ?

    ?

    Pure Fabrication 純虛構

    問題: 當你并不想違背高內聚和低耦合或其他目標,但是基于專家模式所提供的方案又不合適時,哪些對象應該承擔這一職責。

    解決方案: 對人為制造的類分配一組高內聚的職責,該類并不代表問題領域的概念——虛構的事物,用以支持高內聚、低耦合和復用

    ?

    ?

    P308-309 信息專家所支持的目標是,將職責與這些職責所需信息結合起來賦予同一個對象,以實現對低耦合的支持。如果濫用純虛構,會導致大量行為對象,其職責與執行職責所需的信息沒有結合起來,這樣會對耦合產生不良影響。其通常征兆是,對象內的大部分數據被傳遞給其他對象用以處理 (即該對象大量調用其它對象的方法來處理其自身的數據)

    ?

    ?

    Indirection 間接性

    問題: 為了避免兩個或多個事物之間直接耦合,應該如何分配職責?如何使對象解耦合,以支持低耦合并提高復用性潛力?

    解決方案: 將職責分配給中介對象,使其作為其他構件或服務之間的媒介,以避免它們之間的直接耦合。中介實現了其他構件之間的間接性。

    ?

    Protected Variation 防止變異

    問題: 如何設計對象、子系統和系統,使其內部的變化或不穩定不會對其他元素產生不良影響?

    解決方案: 識別預計變化或不穩定之處,分配職責用以在這些變化之外創建穩定的接口。注意:這里使用的“接口”指的是廣泛意義上的訪問視圖,而不僅僅是諸如 Java 接口等字面含義。

    ?????????????

    posted on 2007-03-20 14:48 零雨其蒙 閱讀(512) 評論(0)  編輯  收藏 所屬分類: 學習筆記

    主站蜘蛛池模板: 国产精品亚洲专一区二区三区| 91亚洲国产成人精品下载| 亚洲色偷偷色噜噜狠狠99| 91成年人免费视频| 33333在线亚洲| 成人毛片免费观看视频大全| 亚洲一级高清在线中文字幕| 一个人免费观看在线视频www| 亚洲日本人成中文字幕| 野花高清在线观看免费3中文 | 亚洲精品在线免费观看视频| 99精品免费观看| 亚洲小说区图片区| 免费无码AV电影在线观看| 亚洲AV噜噜一区二区三区| 免费中文字幕在线观看| 99免费精品视频| 亚洲国产成人精品青青草原| 青青草免费在线视频| 特级毛片A级毛片免费播放| 国产亚洲AV夜间福利香蕉149| 久久精品免费电影| 亚洲色一区二区三区四区| 一本色道久久88亚洲综合| 久艹视频在线免费观看| 在线观看亚洲AV日韩A∨| 亚洲精品tv久久久久| 日韩精品人妻系列无码专区免费| 亚洲国产模特在线播放| 亚洲AV无码一区二区三区在线观看| 中国videos性高清免费| 国产成人精品日本亚洲专| 亚洲国产成人精品91久久久| 99精品一区二区免费视频| 亚洲av永久无码一区二区三区| 在线亚洲97se亚洲综合在线| 亚洲一区二区三区免费在线观看| 亚洲日韩AV一区二区三区中文| 国产亚洲精品影视在线产品| 中文字幕无码成人免费视频| 国产无限免费观看黄网站|