工廠模式(Factory Pattern)

2021-10-04 06:25:19 字數 1825 閱讀 5325

一、工廠模式包含三種

說明:抽象工廠模式往往是方法工廠模式的公升級版,當抽象工廠模式只有一種產品的時候,就是方法工廠模式了

二、簡單工廠模式

簡單工廠模式其實並不算是一種設計模式,更多的時候是一種程式設計習慣。

package factory.******factory;

import factory.circleshape;

import factory.rectshape;

import factory.shape;

import factory.tirangleshape;

/** * 簡單工廠類

* 定義乙個工廠類,根據傳入的引數不同返回不同的例項,被建立的例項具有共同的父類或介面

* 特點:

* 1、並不歸類到23種設計模式中,只是一種程式設計規範而已

* 2、這種方式不符合開閉原則,因為有業務要新增的時候,需要修改到工廠類

*/public class ******factory else if(shapetype.equalsignorecase("rect"))else if(shapetype.equalsignorecase("tirangle"))

return shape;

}public static void main(string args)

}

實現的要點主要就是定義乙個產品抽象類,然後用具體的類去實現這個產品抽象類,接著用乙個工廠,根據傳入的引數來判斷需要建立哪個物件例項出來,就是這麼簡單

三、方法工廠

工廠方法模式是簡單工廠的僅一步深化, 在方法工廠模式中,我們不再提供乙個統一的工廠類來建立所有的物件,而是針對不同的物件提供不同的工廠。也就是說每個物件都有乙個與之對應的工廠。

package factory.methodfactory;

/** * 方法工廠模式

* 特點:

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

* 2、簡單工廠只提供統一的獲取物件的工廠類,而方法工廠則是為每個物件都建立了工廠,然後對外只提供乙個統一的工廠類,

* 具體的建立則移步到子類工廠去建立了

* 3、拓展比較方便,而且不影響其他業務

* 4、方法工廠對應的是一種產品,如果對應多種的話,就上公升為抽象工廠了

* 5、抽象工廠模式是工廠方法模式的進一步抽象,針對的是一族產品。如果產品族中只有一種產品,則抽象工廠模式就退化為工廠方法模式

*/public class methodfactory

}

實現的要點:每個產品對應乙個工廠,然後對外提供乙個統一的工廠介面,用於建立相應的工廠

四、抽象工廠

抽象工廠模式是工廠方法的僅一步深化,在這個模式中的工廠類不單單可以建立乙個物件,而是可以建立一組物件。這是和工廠方法最大的不同點

即:如果說方法工廠只可以建立乙個物件,而抽象工廠則是建立多個物件

package factory.abstractfactory;

/** * 抽象工廠

* 1、只是方法工廠的公升級版,但只有一種產品的時候,就是方法工廠,多種產品,就公升級為抽象工廠

* 此例子中加入了一種新的產品,color,所以組合起來就有很多組合了,這裡只是列舉了一種產品組合

*/public class abstractfactorytest

}

上面例項中就是在shape這個產品中,又多加了乙個color產品

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...

簡單工廠模式 工廠模式 抽象工廠模式

簡單工廠模式 簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關類,對於客戶端來說,去除了與具體產品的依賴。但增加功能時,需增加 case 邏輯判斷分支條件,修改了原有的類,我們不但對擴充套件開發了,對修改也開放了,違背了開放 封閉原則。工廠方法模式,定義了乙...

簡單工廠模式 工廠模式 抽象工廠模式

其實這個三個c 的設計模式已經學習很長時間了,今晚才想起來要寫這三個設計模式,為什麼要用c 中的設計模式呢?for example,你已經會開車了,正著開,倒著開,轉彎,這些都是開車基本的,但是你並沒有很高的車技,並不會炫酷。漂移,就好像c 中的設計模式一樣,在你學好c 的基礎上,嫻熟的應用出的新技...