從物件導向到設計模式

2021-04-07 06:51:33 字數 1291 閱讀 8160

設計物件導向軟體比較困難,但是設計可復用的物件導向軟體就更加困難了.隨著物件導向技術的發展,最早的物件導向思想已經落伍了.我們知道物件導向主要內容就是:"封裝","繼承","多型".這個沒有錯.主要是對這三個主要內容的看法,現在和過去已經不同了,下面就我看的一些書從中得到感悟共享給大家.有異意的朋友,歡迎pk.

封裝,以前包括在大學的時候,老師給的直接的解說就是資料隱藏,而我現在要說的是這個解說站的角度太低了,也太片面了.我要給的解釋是隱藏一切可以隱藏的東西,這個聽起來是不是有些空洞了.好那我舉個例子,乙個抽象類是否藏了具體類的實現,從這裡看類也可以隱藏;乙個**物件是否隱藏了乙個被**物件的行為,所以物件也可以隱藏;當你的基類中的虛函式被派生類中的過載了時,其實就是函式被隱藏了.所以封裝不光是資料隱藏,而是一切形式的隱藏.這個也是物件導向中最核心的東西.

繼承,以前老是被強調為軟體復用,從乙個型別更快的構造出另乙個型別.這種說法是片面的.繼承最大的威力是表示了兩個型別"是乙個"的關係,比如交通工具是基類,汽車是派生類,你可以說汽車是一種交通工具.但是交通工具類是個抽象類,根本就沒有什麼可以復用的東西.所以,公有繼承就是對現實世界的物件關係的一種抽象和反映,私有繼承目的才是復用基類資料和方法.

多型,說白了算不上設計層次的乙個特性,只是實現層次的東西.在這裡就不討論了.

還有"組合".有時候組合和私有繼承可以互用,因為他們的目的是一樣的.先舉個例子:假如你要設計乙個汽車,你肯定是先把所有的組成部分設計好,有"引擎","輪胎","車身"等,然後組裝在一起就是一輛汽車了。把它用軟體表示出來,就是組合,乙個汽車物件是由引擎物件,輪胎物件,車身物件等組合成的,它們的關係是"有乙個的關係",汽車有乙個引擎。

把上面的介紹完了,然後看看什麼是設計模式。模式就是"描述了乙個在我們周圍不斷重**生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重複勞動".  模式也是遵循了物件導向中的幾個原則,而得出的對問題解決方案。

1.開放封閉原則。被解釋為"乙個軟體應該對修改是封閉的,對擴充套件是開放的".也就是說應該盡量設計靈活的軟體,不要等需求變化時,修改軟體,而是應該支援擴充,來應對變化。

2.四人團根據上述指導原則,提出模式必須遵循的三點要求。

(1)針對介面程式設計;(2)盡量使用組合而不是繼承;(3)封裝變化點。

其實只要遵守這幾個思想的物件導向解決方案都是模式。模式就是更好的物件導向思想的產物。模式是一種規則和思想,只要你有這樣的思想你也可以創造出新模式。

以後,我會陸陸續續介紹四人團的那23個設計模式的。

參考文獻:

《設計模式精解》, 清華大學出版社, 熊節譯.

《設計模式可復用物件導向軟體的基礎》, 機械工業出版社, 四人團著.

從物件導向到面向切面

1.c語言抽象出了軟體所在的領域 domain 由變數v1,v2,和函式f1,f2,組成的空間 2.物件導向 oop 指出,在這一領域上可以建立分組 group 結構 一組相關的變數和函式構成乙個集合,我們稱之為物件 object 同時在分組結構上可以定義乙個運算 推理 關係 d b,派生類d從基類...

從方法到物件導向

乙個星期結束了,從方法到物件導向,寫乙個總結。方法,方法的過載,遞迴等等,遞迴是乙個比較吃力不討好的程式設計技巧,迴圈出來以後就很少用了。之後便是陣列,一組相同型別資料的有序集合。它的特點是每個陣列元素可通過乙個下標來訪問,長度確定,且不可更改,而且元素必須是相同型別。宣告方式有靜態和動態兩種,有乙...

物件導向 設計模式

提到設計模式,不得不感謝gof gang of four,四人組 他們1995年出版的 設計模式 一書,第一次將設計模式提公升到理論高度,並將之規範化。書中一共總結了23種基本的設計模式。而這23中設計模式幾乎涵蓋了物件導向設計過程中所有問題的解決方案。書中提到的23種設計模式分別是 1.單例模式 ...