一,動機
在工廠方法模式中,具體工廠負責產生具體的產品,每個具體工廠對應一種具體產品。但是有時候,乙個工廠需要提供多個產品物件,而不是單一。對於學校,不僅能培養本科生,研究生,還能培養博士生。這個時候,工廠方式模式就顯得不夠用。
引入兩個概念:
1,產品等級結構。即產品的繼承結構。所有學校的 本科生,都是乙個等級結構。
2,產品族。指同一工廠產生的一組產品。本科生,研究生等就是乙個產品族。
二,定義
提供乙個建立一系列相關或相互依賴物件的介面,而無須指定他們具體的類。
三,模式結構
1,factory(抽象工廠)
規定子工廠的統一介面
2,concretefactory(具體工廠)
實現各個子工廠的具體邏輯。
3,abstractproduct(抽象產品)
工廠所建立的所有物件的父類
4,concreteproduct(具體產品)
子工廠建立的具體產品
四,**例項
#include using namespace std;
class undergraduate
;class postgraduate
;class school
;class undergraduatea: public undergraduate
輸出:
這裡是學校aa
畢業了乙個研究生
這裡是學校bb
畢業了乙個本科生
缺點:在新新增產品物件時,難以擴充套件抽象工廠來生成新產品。因為抽象工廠中已經規定了產品的介面。要支援新的產品,涉及到對工廠角色的修改 設計模式 建立型設計模式 03 抽象工廠(php)
建立型設計模式 抽象工廠 抽象工廠模式 abstract factory 是所有形態的工廠模式中最為抽象和最具一般性的工廠模式。抽象工廠模式可以向客戶端提供乙個介面,是的客戶端在不必指定產品的具體型別的情況下,能夠建立多個產品族的產品物件。要理解抽象工廠模式,必須理解以下2個概念 產品等級結構 產品...
設計模式 建立型 抽象工廠
pragma once ifndef abstractfactory h define abstractfactory h 抽象基類abstractproducta,代表產品a 的抽象 class abstractproducta virtual abstractproducta 派生類concre...
建立型設計模式 抽象工廠
抽象工廠模式 abstractfactory 每乙個模式都是針對一定問題的解決方案,工廠方法模式針對的是乙個產品等級結構 而抽象工廠模式針對的是多個產品等級結果。產品族 是指位於不同產品等級結構中,功能相關聯的產品組成的家族。一般是位於不同的等級結構中的相同位置上。每乙個產品等級結構中有多少個具體的...