設計模式 2 抽象工廠方法

2021-07-30 13:52:34 字數 3474 閱讀 9476

1-抽象工廠

提供乙個介面,用於建立相關或者依賴物件的家族,而不需要指定具體的實現類

2-設計原則

(1)開閉(2)多用組合,少繼承

抽象工廠和工廠方法的區別

(1)工廠通過繼承解耦;抽象工廠通過組合解耦

(2)工廠用於建立乙個抽象產品,具體的工廠用於建立具體的產品;抽象工廠用於建立乙個產品家族的抽象型別

3-使用場合

(1)建立產品家族

(2)提供乙個產品庫,並只想顯示器介面而非實現

*****===抽象食物介面

package shejimoshinadianshi.abstractfactory.model;

/*** created by hjw on 16/8/28.

* 食物輔助介面,用於實現共性,如列印資訊

*/public inte***ce ifood

*****===抽象食物

package shejimoshinadianshi.abstractfactory.model;

/*** created by hjw on 16/8/28.

* 抽象的食物物件

*/public abstract class abstractbasefood }

*****===抽象食物雞翅

package shejimoshinadianshi.abstractfactory.model;

/*** created by hjw on 16/8/28.

*/public abstract class chickenwings extends abstractbasefood implements ifood}

*****===抽象食物漢堡

package shejimoshinadianshi.abstractfactory.model;

/*** created by hjw on 16/8/28.

* 建立不同食物的抽象類

*/public abstract class hamburg extends abstractbasefood implements ifood}

*****===具體食物雞翅

package shejimoshinadianshi.abstractfactory.model.kfc;

import shejimoshinadianshi.abstractfactory.model.chickenwings;

/*** created by hjw on 16/8/28.

* 雞翅實現類

*/public class chinachickenwings extends chickenwings }

*****===具體食物漢堡

package shejimoshinadianshi.abstractfactory.model.kfc;

import shejimoshinadianshi.abstractfactory.model.hamburg;

/*** created by hjw on 16/8/28.

* 建立具體的食物

*/public class chinahamburg extends hamburg }

*****===抽象工廠介面

package shejimoshinadianshi.abstractfactory.itf;

import shejimoshinadianshi.abstractfactory.model.chickenwings;

import shejimoshinadianshi.abstractfactory.model.hamburg;

/*** created by hjw on 16/8/28.

* 抽象工廠介面

*/public inte***ce ikfcfactory

*****===具體工廠

package shejimoshinadianshi.abstractfactory.itf;

import shejimoshinadianshi.abstractfactory.model.chickenwings;

import shejimoshinadianshi.abstractfactory.model.hamburg;

import shejimoshinadianshi.abstractfactory.model.kfc.chinachickenwings;

import shejimoshinadianshi.abstractfactory.model.kfc.chinahamburg;

/*** created by hjw on 16/8/28.

* 具體的工廠

*/public class chinakfcfactory implements ikfcfactory

@override

public chickenwings creatchichenwings(string kind, float price, int num) }

*****客戶類-通過工廠暴露的方法實現具體物件的建立

package shejimoshinadianshi.abstractfactory.custom;

import shejimoshinadianshi.abstractfactory.itf.ikfcfactory;

import shejimoshinadianshi.abstractfactory.model.chickenwings;

import shejimoshinadianshi.abstractfactory.model.hamburg;

/*** created by hjw on 16/8/28.

* 客戶類-通過工廠暴露的方法實現具體物件的建立

*/public class custom

public float orderhamburg(string kind, float price, int num)

public float orderchickenwings(string kind, float price, int num)}

package shejimoshinadianshi.abstractfactory;

import shejimoshinadianshi.abstractfactory.custom.custom;

import shejimoshinadianshi.abstractfactory.itf.chinakfcfactory;

import shejimoshinadianshi.abstractfactory.itf.ikfcfactory;

/*** created by hjw on 16/8/28.

*/ public static void main(string args)

}

設計模式 簡單工廠 工廠方法 抽象工廠方法模式

簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...

設計模式 工廠方法 抽象工廠模式

在業務邏輯中往往有需要建立物件的需求 如何將這部分邏輯封裝並且使得其能個適應於頻繁的變化呢?簡單工廠模式 將物件建立邏輯封裝隔離在簡單工廠類的方法中。簡單工廠的常見實現方式 1 簡單工廠類以及其建立物件的靜態方法 其客戶可以直接呼叫該類的靜態方法。2 簡單工廠類以及其建立物件的成員方法 其客戶 需要...

設計模式 抽象工廠方法

個人理解為抽象工廠方法是多個工廠方法,具體如下 工廠方法模式 乙個抽象產品類,可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類只能建立乙個具體產品類的例項。抽象工廠模式 多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類...