名字看起來類似adapter,事實上完全不同。
兩個原則:
1.封裝變化點
2.使用對象組合代替繼承,防止冗余類。
第一個原則更為重要,明確給出了設計的依據。
例:
作圖程序,circle 和tangle繼承了sharp。
問題出現:你需要同時考慮在顯示屏上畫圖,或在pda上畫圖(完全是假設情況)
那么是否需要為每個類增加一個附本?Circle和Circle_pda?這會導致冗余和過多的類。
參照第一個原則,這里有兩個變化點 :1是什么圖形 2是什么環境(實現的方式)
用Sharp的繼承樹,記錄第一變化點。
用Drawing的繼承樹,記錄第二變化點。
同時在Sharp中,組合Drawing.
原文我并沒有仔細看,總之我的直觀感覺就是:
一個繼承樹反映一個變化點,使用組合的方式工作。相當于把設計二緯化,使x軸和y軸的設計能夠相對獨立。