這幾天瞄了幾本設計模式的書,沒有細看具體模式啦,而是老是琢磨那些深奧無比的話。這些話經常出現在計算機的書籍中,很有禪意,也有哲理。聽說,高手就喜歡寫點這樣的話。
還有就是細心體味了一下OO的設計原則,這些原則是凌駕于模式之上的,也就是更宏觀的原則。
其中,最高指導的一個就是“開-閉”原則。別的原則,里氏代換原則、依賴倒置原則、組合/聚合復用原則和迪米特法則都是為了達到“開-閉”原則而出現的規則。
這些原則告訴我很多東西,聚焦于一點就是要“面向抽象”來做一切事情。
分析對象的時候,要多分析設計“抽象”的概念,對象之間的聯系要多基于抽象的概念而不是具體,這樣具體才能能夠變化,這樣才是開閉。用我自己的話就是要“游走于 抽象”。
這里有一個我必須記住的就是,在封裝變化時候,多用聚合/組合,少用繼承。在封裝原子變化并且是同類型對象時才用繼承,別的都盡量用聚合/組合。而且盡量不要用多級繼承,多級繼承一般意味著有兩種變化脈絡,可能的話,讓兩種變化脈絡獨立演化。很明顯,一獨立演化,又要聚合/組合了。
還有一個必須記住的是:運用抽象以后,客戶端的使用發生了巨大的變化。不再是指那兒用那兒。而是要做更多的準備工作,因為運用抽象,本身就把具體“組合”的職責推遲到使用的階段。那誰使用,肯定是客戶端。所以,客戶端的使用要革新。要習慣用工廠,習慣把一系列的抽象定具體了,并按照一定方式“組合”起來用。而且,最終要善于用接口來調用方法。
用小飛推薦的一個工具畫了個圖,如下:

MARCO ZHANG 2006年2月27日7:18:57