誰是物件導向的設計霸主?(上)

2021-09-07 00:26:27 字數 1507 閱讀 9330

在取向的物件世界,永遠沒有最好的設計模式最強。每種模式從來沒有任何人誰也不服,每個內訌。絕不放手。今天。連同簡單工廠模式,包括24設計模式聚集在中原,間。烏雲密布。殺氣沖天,物件導向的世界裡要迎來一場浩劫。血雨腥風,在所難免

在資格賽中,來自工廠家族的簡單工廠模式首先被滅掉了,其致命的失誤在於簡單工廠模式根本不符合開放—封閉原則,因此慘遭滅門也是不足為怪的。然而讓人欣慰的是,工廠家族的另兩個派系工廠方法模式和抽象工廠模式都晉級了小組賽,而且被分在了同一組,這樣看來他們不得不自相殘殺。其命運令人堪憂啊。

我們來看看各個模式的分組情況:首先是建立型模式小組。分別包括單例模式、工廠方法模式、抽象工廠模式、建造者模式和原型模式5個派系,其次是結構型模式小組:分別包括介面卡模式、裝飾模式、橋接模式、組合模式、享元模式、**模式以及外觀模式7大實力強勁的門派,因為本組的各個模式實力都比較強,因此也被稱為死亡之組,最後是行為型模式組。因為這一組的的派系較多。被分為了兩個小組:行為一組和行為二組。先來看行為一組都有誰。觀察者模式、模板方法模式、命令模式、狀態模式和職責鏈模式。行為二組有直譯器模式、中介者模式、訪問者模式、策略模式、備忘錄模式、迭代器模式。

首先,我們了解一下建立型模式組的各個模式都有什麼過人之處,怎樣能在物件導向的設計中占有一席之地,以至於可以稱霸武林。

建造者模式:將乙個複雜物件的構建與它的表示分離。使得相同的構建過程能夠建立不同的表示。

工廠方法模式:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠模式使乙個類的例項化延遲到其子類。

原型模式:用原型例項指定建立物件的種類,而且通過拷貝這些原型建立新的物件。

單例模式:保證乙個類僅有乙個例項,而且提供乙個訪問它的全域性訪問點。

大家各就各位後,開始了激戰:抽象工廠模式說:建立型模式的優勢在於隱藏了這些類的例項是怎樣被建立和放在一起的,整個系統關於這些物件所知道的是由抽象類所定義的介面。

如此一來,建立型模式在建立了什麼,誰建立的,怎麼被建立的以及何時建立的等方面提供了非常大的靈活性。

原型模式使出了自己的絕招:我們能夠建立對應數目的原型並轉殖他們通常比每次用合適的狀態收工例項化該類更方便一些。

建造者模式也用了獨門武功:我們將乙個複雜物件的構建與它的表示分離,如此便可輕鬆地改變乙個產品的內部表示,而且使得構造**和表示**分開。這樣對客戶來講,無需關心產品的建立過程。而僅僅要告訴我們須要什麼就能夠用相同的構建過程建立不同的產品出來。

單例模式略顯單薄,但也不甘示弱:對一些類來說。乙個例項是很重要的,乙個全域性物件能夠使得乙個物件被訪問。可是不能防止客戶例項化多個物件,而我們的獨門秘籍就是讓類自身負責儲存它的唯一例項。同一時候將類外的例項化道路封死,而且提供乙個訪問該例項的方法,這樣就使得對唯一例項能夠嚴格地控制客戶如何以及何時訪問它。

最後工廠方法模式放出了大招。頓時天昏地暗:天下設計,無不源自工廠。當設計者發現須要更大的靈活性時。方才向其它建立型模式演化!

溯其本源,在我工廠!

果然是殺傷力極強的武功。盡顯王者風範,終於的結果不言而喻

誰是物件導向設計中的霸主?(中)

在上篇博文中。我們一起了解了建立型模式組的戰況,以下我們來看看號稱 死亡之組 的結構型模式的戰況。所謂結構型模式,就是針對系統的結構進行設計,重點考慮產品的層次結構等問題。以下我們一起來了解一下本組各個門派的資料 介面卡模式 講乙個類的介面轉換成客戶希望的另外乙個介面。介面卡模式使得原本因為介面不相...

物件導向設計

物件導向設計 object oriented design,ood 方法是oo方法中乙個中間過渡環節。其主要作用是對ooa分析的結果作進一步的規範化整理,以便能夠被oop直接接受。物件導向設計 ood 是一種軟體設計方法,是一種工程化規範。這是毫無疑問的。按照bjarne stroustrup的說法...

物件導向設計

1 物件導向的三要素 1.1 封裝 encapsulation a 封裝 合理的隱藏資料的隱藏 隱藏在方法背後 實現的隱藏 隱藏在介面背後 變化的隱藏 隱藏在抽象背後 b 封裝能夠提高物件的復用性 減低物件的耦合度c 良好的封裝 物件的高內聚 1.2 繼承 inheritance a 基於差異式程式...