書接上回,上次說到了簡單工廠模式的缺陷--如果有多個產品,或者增加新的產品就需要修改工廠類的判斷**邏輯 因此引入了工廠方法模式為對應的產品子類來建立工廠子類,即利用多型的特性動態建立物件
工廠介面
public inte***ce mobilefactory_2
實現工廠介面的工廠子類
public class higemobilefactory_2 implements mobilefactory_2
}
public class lowmobilefactory_2 implements mobilefactory_2
}
建立測試–客戶端呼叫工廠類
public class mobilephonetest_2
}
工廠介面
public inte***ce mobilefactory
實現工廠介面的工廠反射類
public class reflectmobilefactory implements mobilefactory catch (instantiationexception e)
catch (illegalacces***ception e)
catch (classnotfoundexception e)
return
(t) mobilephone;
}}
建立測試–客戶端呼叫工廠類
public class mobilephonetest
}
工廠方法模式相比於簡單工廠模式的優點:沒有違背開放封閉原則,解決了新增例項會修改工廠類中的**邏輯的問題。
思考題:
如果需要建立的子類越來越多,不僅僅有手機,還有好多其他東西,難道都需要建立乙個工廠子類嘛?
可以對產品類進行分組,組內不同產品對應同乙個工廠類的不同方法–這就是我們下次要說的抽象工廠模式
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
工廠方法模式 工廠方法模式 二
工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...
工廠方法模式(一) 簡單工廠方法模式
ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...