設計模式之 工廠模式

2021-07-22 15:08:42 字數 2842 閱讀 7721

按照真實社會中產品的生產銷售過程來管理你的「產品」,讓你的工程更加結構清晰。

定義乙個用於建立物件的介面,讓子類決定例項化哪個類。

以乙個農戶賣水果產品為例子來介紹該模式。

農戶開了一家水果店,水果的**是來自一家生產水果的工廠,水果店老闆販賣與更換水果都是從該工廠進貨,農戶需要什麼水果,工廠生產什麼水果。

該情景中有,農戶,水果,生產水果的工廠,這幾個物件。用**構建以上情景如下。

首先人們生活的社會中是有水果的,建立乙個水果的抽象類,以及具體的兩種水果,

/**

* 抽象的水果類

*@author administrator

* */

public

abstract

class

fruit

簡單實現兩種具體的水果:蘋果,橘子

蘋果:

public

class

extends

fruit

}

橘子

public

class

orange

extends

fruit

}

有水果也肯定有生產加工水果的工廠:構建乙個生產水果的工廠

/**

* 生產水果的抽象工廠

*@author administrator

* */

public

abstract

class

factory

具體的水果工廠a

/**

* 生產水果的具體工廠a

*@author administrator

* */

public

class

fruitfactorya

extends

factory

}

賣水果的工廠b也是類似,不在重複。

構建出乙個要賣水果的農戶。

/**

* 賣水果的農戶

*@author administrator

* */

public

class

farmer

現在這個環境中有水果,有能提供水果的工廠,也有想要水果的農戶,

所以農戶只要聯絡到乙個生產水果的工廠,向工廠購買水果即可得到水果

/**

* 賣水果的農戶

*@author administrator

* */

public

class

farmer

}

如果農戶想要水果橘子的話,則需要讓工廠a去生產橘子即可。

/**

* 生產水果的具體工廠a

*@author administrator

* */

public

class

fruitfactorya

extends

factory

}

但是這跟生活中的情景不太類似,因為乙個農戶想要換水果,就去修改工廠的**,工廠應該是乙個萬能的工廠,農戶只需提出他需要什麼水果,工廠就能為期生產什麼水果。萬能的工廠需要反射來實現

/**

* 生產水果的抽象工廠

*@author administrator

* */

public

abstract

class

factory

具體的生產水果的工廠通過反射獲取水果類即可

/**

* 生產水果的具體工廠a

*@author administrator

* */

public

class

fruitfactorya

extends

factory catch (exception e)

return fruit;

}}

農戶只需在進貨時告訴工廠需要什麼水果即可

/**

* 賣水果的農戶

*@author administrator

* */

public

class

farmer

}

以上便是工廠模式的簡單應用,**雖然多了點,但是結構清晰易懂

另外—農戶在進水果的過程中可能不止聯絡了乙個工廠,比如他在工廠a買蘋果,在工廠b買橘子。**表示如下:

/**

* 賣水果的農戶

*@author administrator

* */

public

class

farmer

}

這種擁有多個工廠的情形,我們成為多工廠方法模式。

還有一種情況就是,當我設定的情形中只有乙個工廠的時候,該工廠任務明確,這時候我們沒必須再去抽象乙個工廠類,比如上述情境中,賣水果的工廠只有乙個,則factory工廠我們可以這樣寫

public

class factoryb catch (exception e)

return fruit;

}}

農戶購進水果時:

system.out

.println(fr.fruitname());

上面這種情況,我們稱之為簡單工廠模式,或者靜態工廠模式。他是工廠方法模式的乙個弱化版本。

設計模式 設計模式之工廠模式

工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...

c 設計模式 之 工廠模式之 工廠模式

1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...

設計模式 工廠模式之簡單工廠模式

定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...