設計模式 建立型模式 五種

2021-08-20 09:18:28 字數 2304 閱讀 3882

模式型別

設計模式

建立型模式——五種

工廠方法模式,原型模式,建造者模式,抽象工廠模式,單例模式

結構型模式——七種

介面卡模式,橋接模式,裝飾模式,組合模式,外觀模式,享元模式,**模式

行為型模式——十一種

模板方法模式,命令模式,迭代器模式,觀察者模式,中介者模式,備忘錄模式,直譯器模式,狀態模式,策略模式,職責鏈模式,訪問者模式

設計模式可以幫助我們設計出低耦合性的**,在所有設計模式中,簡單工廠模式是我們以後接觸比較多的,簡單工廠模式解決的首要問題就是降低程式之間的耦合度,通過封裝,繼承和多型來實現解耦,從而使我們的**更易於維護和復用。

1、缺點

工廠類集中了所有產品建立邏輯,一旦不能正常工作,整個系統都會受到影響。

系統擴充套件困難,一旦新增新產品就不得不修改工廠邏輯,這樣就會造成工廠邏輯過於複雜。

2、適用情況

當工廠類負責建立的物件比較少時可以考慮使用簡單工廠模式。

客戶如果只知道傳入工廠類的引數時,對於如何建立物件的邏輯不關心時可以考慮使用簡單工廠模式。

工廠方法模式通過物件導向程式設計中的多型性來將物件的建立延遲到具體工廠中,從而解決了簡單工廠模式中存在的問題,同時也滿足了開發封閉原則(即對擴充套件開發,對修改封閉)。工廠方法模式之所以可以解決簡單工廠的模式中的問題,是因為他的實現把具體產品的建立推遲到子類中,此時工廠類不再負責所有產品的建立,而只是給出具體工廠必須實現的介面,這樣工廠方法就可以允許系統不修改工廠類邏輯的情況下來新增新產品,這樣也就克服了簡單工廠模式中的缺點。

0、為什麼會出現原型模式?

在軟體系統中,當建立乙個類的例項的過程很昂貴或很複雜,並且當我們需要建立多個這樣類的例項時,如果我們用new操作符去建立這樣的類例項,未免會增加建立類的複雜度和耗費系統複雜程度,所以使用工廠模式來封裝類建立過程並不合適,由此產生了原型模式。因為每個類例項都是相同的,當我們需要多個相同的類例項時,沒必要每次都使用new運算子去建立相同的類例項物件,那應該怎麼辦呢?只建立乙個類例項物件,如果後面需要更多這樣的例項,可以通過對原來物件拷貝乙份來完成建立,這樣在記憶體中不需要建立多個相同的類例項,從而減少記憶體的消耗和達到類例項的復用。

1、優點

2、缺點

1、何時用建造者模式?

如果我們需要將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示的意圖時,我們需要應用於建造者模式,建造者模式可以將乙個產品的內部表象與產品的生成過程分割開來,從而可以使乙個建造過程生成具有不同的內部表象的產品物件。如果我們用了建造者模式,那麼使用者就只需指定需要建造的型別就可以得到它們,而具體建造的過程和細節就不需要知道了。

在軟體系統中,有時需要建立乙個複雜物件,並且這個複雜物件由其各部分子物件通過一定的步驟組合而成,這時就用到了建造者模式。建造者模式使得建造**與表示**相分離,可以使客戶端不必知道產品內部組成的細節,從而降低了客戶端與具體產品之間的耦合度。

2、優點

建造者模式就是將乙個複雜物件的構建與他的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式的本質是使組裝過程(用指揮者類進行封裝,從而達到解耦的目的)和建立具體產品解耦,使我們不用去關心每個元件是如何組裝的。

抽象工廠模式:提供乙個建立產品的介面來負責建立相關或者依賴的物件,而不具體明確指定具體類。抽象工廠允許客戶使用抽象的介面來建立一組相關產品,而不需要知道或關心實際生產出的具體產品是什麼。這樣客戶就可以從具體產品中被解耦。

0、何時使用抽象工廠模式?

1、優點

抽象工廠模式將具體產品的建立延遲到具體工廠的子類中,這樣將物件的建立封裝起來,可以減少客戶端與具體產品類之間的依賴,從而使系統的耦合度降低,更有利於後期的維護和擴充套件。

2、缺點

抽象工廠模式很難支援新種類產品的變化。因為抽象工廠介面中已經確定了可以被建立的產品集合,如果需要新增新產品,此時就必須去修改抽象工廠的介面,這樣就涉及到抽象工廠類以及所有子類的改變,也就違背了「開發——封閉原則」。

1、為什麼會出現單例模式?

當我們的系統中某個物件只需要乙個例項時,就出現單例模式的使用了,舉個栗子:作業系統只能有乙個任務管理器,操作檔案時,同一時間內只允許乙個例項對其操作等,既然現實生活中有這樣的應用場景,自然在軟體設計領域也會有這樣的解決方法了(軟體設計就是現實生活的抽象),由此產生了單例模式。

單例模式保證了乙個類只有乙個例項的一種實現方法。官方定義:確保乙個類只有乙個例項,並提供乙個全域性訪問點。

設計模式其實就是幫助我們解決實際開發過程中的方法,單例模式是為了降低物件之間的耦合度,然而解決方法有很多種,這只是其中一種,所以前人就總結了一些常用的解決方法為書籍,從而有了設計模式。

兒童節送給大家的禮物!純真,不是外在而是內在;童心,不是心靈而是心態;幸福,不是物質而是感受;願我們都能擁有純真的童心!

JS設計模式 4種建立型模式

作用 實現物件的批量建立 建構函式 function person name function car model 建立 function create type,val create.prototype console.log create person zhangsan console.log ...

設計模式 建立型模式 原型模式

1 原型模式 prototype模式 是指 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件 2 原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節 3 工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型...

設計模式 建立型模式

建立型模式 與物件的建立有關。1 簡單工廠模式 靜態工廠 簡單工廠關聯具體類,通過簡單工廠來建立具體的類。封裝變化到簡單工廠裡面去。工廠類 具體類 2 工廠模式 抽象工廠 具體工廠 具體類 要是新增新的類,只需要擴充套件就可以了。他們對外的行為是一致的。3 抽象工廠 抽象工廠 具體工廠 具體類 具體...