工廠方法模式vs簡單工廠模式
工廠方法模式實現**
工廠方法模式存在的弊端
工廠方法模式適用場景
之前討論了簡單工廠模式,回顧一下它的弊端,主要有3個:①當新增一種產品時,需要修改工廠類中的方法,違反了開閉原則。②當產品類非常多的時候,工廠類中的判斷邏輯也會變得複雜,不利於維護。③眾多客戶端都依賴同乙個工廠類,當該工廠類無法工作時,呼叫它的客戶端也無法工作。為了解決上面提到的弊端,我們需要用到工廠方法模式來作為替代方案。工廠方法模式是簡單工廠模式的進一步抽象。
定義工廠方法模式是簡單工廠模式的進一步抽象化和推廣,工廠方法模式裡不再只由乙個工廠類決定那乙個產品類應當被例項化,這個決定被交給抽象工廠的子類去做。
角色組成
類圖構成
回到之前的討論,使用了工廠方法模式之後,當新增一種產品時,我們需要做什麼?
新增乙個產品的實現類productc。
新增乙個具體工廠類。
在客戶端呼叫。
如此來看,我們不必修改任何已有的**,完全符合開閉原則。
產品介面
public
inte***ce
product
extends
serializable
產品實現public
class
producta
implements
product
}public
class
productb
implements
product
}
工廠介面public
inte***ce factory
工廠實現類public
class
productafactory
implements
factory
}public
class
productbfactory
implements
factory
}
客戶端呼叫public
class factoryclient
}
根據上面的邏輯,每新增一種產品,我們就要新增乙個產品實現類,新增乙個產品工廠實現類。當系統中有數百種產品的話,就要有對應多的工廠類,對於維護是個挑戰。
其實也是所有工廠模式的適用場景。
設計模式 工廠方法模式
一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...
設計模式 工廠方法模式
1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...
設計模式 工廠方法模式
框架的基礎知識 對框架的理解 框架和設計模式的關係 工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到其子類。結構 產品 public inte ce product 具體產品 public class productimpl...