閱讀此文應先閱讀簡單工廠模式與工廠方法模式抽象工廠模式是物件的建立模式,它是工廠方法模式的進一步推廣。
假設乙個子系統需要一些產品物件,而這些產品又屬於乙個以上的產品等級結構。那麼為了將消費這些產品物件的責任和建立這些產品物件的責任分開,可以引進抽象工廠模式。這樣的話,消費產品的客戶不需要直接參與產品的建立工作,而只需要向乙個公用的工廠介面請求所需要的產品。
採用抽象工廠模式設計出的系統類圖如下。
從上圖可以看到,抽象工廠模式設計到以下的角色:
抽象工廠角色:擔任這個角色的是工廠方法模式的核心,它是與應用系統的商業邏輯無關的。通常使用介面或抽象類實現。
具體工廠角色:這個角色直接在客戶端的呼叫下建立產品的例項。這個角色含有選擇合適的產品物件的邏輯,而這個邏輯是與應用系統的商業邏輯緊密相關的。通常使用具體的類實現。
抽象產品角色:擔任這個角色的類是抽象工廠方法模式所建立的物件的父類,或它們共同擁有的介面。通常使用介面或抽象類實現這一角色。
具體產品角色:抽象工廠模式所建立的任何產品物件都是某一具體產品類的例項。這是客戶端最終需要的東西。通常使用具體類實現這個角色。
下面給出這個系統的原**:
creator:
public inte***ce creator
concretecreator1:
public class concretecreator1:creator
public productb factoryb()
} concretecreator2:
public class concretecreator2:creator
public productb factoryb()
} producta:
public inte***ce producta
producta1:
public class producta1:producta
} producta2:
public class producta2:producta
} productb:
public inte***ce productb
productb1:
public class productb1:productb
} productb2:
public class productb2:productb
} 在以下情況下應該使用抽象工廠模式:
乙個系統不應當依賴於產品類例項如何被建立、組合和表達的細節,這對於所有形態的工廠模式都是重要的。
這個系統的產品有多於乙個的產品族,而系統只消費其中某一族的產品。
同屬於同乙個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來。
系統提供乙個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴於實現。
設計模式C 描述 抽象工廠模式
設計模式c 描述 抽象工廠模式 閱讀此文應先閱讀簡單工廠模式與工廠方法模式 抽象工廠模式是物件的建立模式,它是工廠方法模式的進一步推廣。假設乙個子系統需要一些產品物件,而這些產品又屬於乙個以上的產品等級結構。那麼為了將消費這些產品物件的責任和建立這些產品物件的責任分開,可以引進抽象工廠模式。這樣的話...
設計模式C 描述 抽象工廠模式
設計模式c 描述 抽象工廠模式 閱讀此文應先閱讀簡單工廠模式與工廠方法模式 抽象工廠模式是物件的建立模式,它是工廠方法模式的進一步推廣。假設乙個子系統需要一些產品物件,而這些產品又屬於乙個以上的產品等級結構。那麼為了將消費這些產品物件的責任和建立這些產品物件的責任分開,可以引進抽象工廠模式。這樣的話...
設計模式C 描述 抽象工廠模式
設計模式c 描述 抽象工廠模式 閱讀此文應先閱讀簡單工廠模式與工廠方法模式 抽象工廠模式是物件的建立模式,它是工廠方法模式的進一步推廣。假設乙個子系統需要一些產品物件,而這些產品又屬於乙個以上的產品等級結構。那麼為了將消費這些產品物件的責任和建立這些產品物件的責任分開,可以引進抽象工廠模式。這樣的話...