我面對關於抽象工廠出了問題,抽象工廠查詢
class AbstractProductFactory{
public:
virtual ProductA* createProductA() = 0;
virtual ProductB* createProductB() = 0;
};
我ConcreteProductFactory類覆蓋的是創造產品這兩個成員函數。
當我需要添加新的ProductC
創建時,我正面臨一個問題。如果我添加一個新的虛函數ProductC* createProductC() = 0;
,那麼所有現有的ConcreteProductFactory類都需要修改,這也是違反開放原則的。
解決此問題的最佳方法是什麼?
爲什麼'AbstractProductFactory'函數可以創建'ProductA'和'ProductB'而不是'ProductC'函數呢? – Shoe
它的要求是後者,我可以但在這種情況下,我必須修改所有的concretefactory類來覆蓋createProductC()函數,我已經提到了一件事情,它也是違反開放原則。我只想知道處理這種condn的理想方式,就像我們創建不同的productB對象一樣,後來新的需求需要更多不同的新productB對象,在這種情況下我們不需要創建不同的concreteProductFactory,我們可以使用Prototype模式來克服這樣的問題。我想我清楚你的疑惑。 – user2516685