啃書筆記:設計模式
最近在啃的書,都是大部頭,不方便隨身攜帶.于是,就在包里丟了本<設計模式解析>,以便平時沒事干的時候看.
可是由于看了的很多東西都不能立刻投入到實用中,久而久之就很容易忘記.(effective那兩本就是這樣).
于是就想在讀書的同時寫寫一些關鍵點以及理解,權當加深記憶,還有鍛煉表達能力.
這個坑就獻給<設計模式解析>,<設計模式>這兩書吧.前者是聽到網上評論說不錯,讀了再讀<設計模式>會理解的更好,于是就入了.現在在讀.
由于這是剛看剛寫,如果有不正確的,希望賜教,見笑啦.
======================================================================
內聚性指的是類內部組成部分之間相互聯系的緊密程度
耦合性指的是一個類與其它類之間聯系的緊密程度
封裝變化
用類的聚合代替繼承
Facade
"為子系統中的一組接口提供一個統一的接口.Facade模式定義了一個更高層的接口,使子系統更加容易使用"
Facade模式是提供一個新的,更加簡單以及符合實用的接口,來使用一個復雜系統的子集.
我寫的那個俄羅斯方塊中的Console類,貌似就是符合Facade模式的,需要用的控制臺API(占總數的一小部分)封裝到Consol類中,使得控制方塊的顯示改變更加容易.
Adapter
"將一個類的接口轉換成客戶希望的另外一個接口.Adapter模式使原本由于接口不兼容而不能一起工作的類可以一起工作."
1.例如抽象類有接口int foo(int a,int b,bool c),其派生類A中的foo函數已經由另外一個函數實現,但是函數foo2只需要兩個參數,則可以如下復用代碼.
int foo(int a,int b,bool c)
{
return foo2(a,b);
}
Strategy
"定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換.Strategy模式使算法可獨立于使用它的客戶而變化."
(話說,這句話真是看的人云里霧里的...)
一個類A中,擁有許多的成員函數,這些函數都需要根據一些狀態進行不同操作.如果將A當作基類直接寫相應狀態的派生類時,隨著狀態的復雜程度增加,則會導致繼承層次過大,特化版本過多.
Strategy模式則是將類A中的函數封裝成虛基類,然后通過繼承A中的類成員以應對不同的狀態.
Bridge
"將抽象與其實現解耦,使它們都可以獨立地變化."
一個類A需要調用不同的實現做不同的事情,如果用繼承去解決(用某種實現實現某種事情則為1個派生類),隨著不同的實現(m)和不同的事情(n)的數量增長,會造成派生類數量的爆炸性增長(m*n).Bridge模式是把實現抽象,然后在A中持有實現的句柄,再通過動態創建做事情(m+n).
Abstract Factor
"為創建一組相關或相互依賴的對象提供一個接口,而且無需指定它們的具體類."
@_@ 這個覺得定義的挺明確的,剛看完,還沒怎么思考過,有空再補寫...
to be continue...
posted on 2009-10-14 20:54 DJ 閱讀(296) 評論(0) 編輯 收藏 引用 所屬分類: 啃書筆記