設計模式總結1 工廠三姐妹

2021-09-12 19:04:30 字數 1347 閱讀 7754

前言:設計模式的總結已經開始,回想起來自己也有一段時間沒有好好總結了,雖說自考很重要,但若經常因為這種時間分配不均的情況而顧此失彼,這不是我們倡導的學習方法,所以,還要不斷進步啊~

今天要總結的,是設計模式中的三個模式--工廠三姐妹:簡單工廠模式、工廠方法模式,和抽象工廠模式。

首先我們來看一下三個工廠的各自定義:

1.簡單工廠模式:簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。

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

三個定義各不相同,但其實都有乙個共同點,當然,既然我今天把它們放到一起說,那肯定是因為有相通點的:都是工廠來實現類,而並非單純的客戶端實現功能。這樣當然是為了提高**的復用性與可維護性。

說完相同點,我們來談一談不同點:而這就要從我對這三個模式的個性解讀來說起了--畢竟這些定義對於初學者來講很不友好,還需要自己好好消化一番才能解決。

1.簡單工廠模式不需要多講解,而從設計模式來看,它並不能算是乙個合格的設計模式:因為它違反了開放-封閉原則:軟體的實體(類、模組、函式等)可以擴充套件,但不可修改。

簡單工廠模式的uml圖:(以運算類為例)

由於通過乙個大工廠用來例項化各種類,使得當提出新需求時(比如在原有的乙個運算工廠中,新增了乙個「打折」的計算方式,這就需要修改這個工廠)不得不對已經寫好的工廠類進行重新修改,這樣大大增加了**的維護難度。從uml圖中也可體現出來。

2.工廠方法模式的個性化理解:簡單來講就是某個具體類是由對應的具體工廠來實現的

工廠方法模式的uml圖:(同樣以運算類為例)

工廠方法模式與簡單工廠模式的最大不同就是建立了許多與運運算元類相對應的子工廠,每個子工廠實現乙個子類。

這種模式解決了簡單工廠模式中違反開-閉原則的問題:若要加入新演算法,只需增加乙個子工廠與這個類即可。

3.抽象工廠模式的個性化理解:抽象工廠模式是工廠方法模式的乙個延伸:可以實現多個不同層級的類(產品類a和產品類b)。

工廠方法模式是只有乙個層次(加減乘除都屬於運算類),而抽象工廠中有多個層次,比如一家人需要外出旅行,既要開車,又要拿包,還要拿餐具,這三類東西都不屬於乙個層級,而抽象工廠要做的就是實現這幾個不同層級的事物。

抽象工廠模式的uml圖:

設計模式 工廠三姐妹

工廠三姐妹,指的就是簡單工廠模式,工廠方法模式,和抽象工廠模式。他們三個都屬於建立型模型,主要用於描述如何建立物件。這三個姐妹之間有相似的地方,也有很多不同的地方,下面讓我們來具體看看他們的介紹和區別吧。簡單工廠模式 factory pattern 定義乙個工廠類,它可以根據引數的不同返回不同類的例...

設計模式 工廠三姐妹

簡單工廠模式 簡單工廠模式是屬於建立型模式,又稱靜態工廠方法模式。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。實質 ...

大話設計模式 比較工廠三姐妹

在沒開始看大話設計模式以為是本小人書呢,當我開始看書的時候發現真的是本小人書,通過生活的一些規律告訴我們各種設計模式,借用英語上的就是思維閃現,每次想到設計模式就能想到小故事,看到小故事就能想起是那個設計模式,所以大話設計模式可是本好書,就是以我的水平看讓人暈頭轉向的,而且在看大話模式的時候出現了三...