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 簡單工廠類以及其建立物件的成員方法 其客戶 需要...
設計模式 抽象工廠方法
個人理解為抽象工廠方法是多個工廠方法,具體如下 工廠方法模式 乙個抽象產品類,可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類只能建立乙個具體產品類的例項。抽象工廠模式 多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類...