定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。
工廠方法模式中,抽象產品類product負責定義產品的共性,實現對事物最抽象的定義;creator為抽象建立類,也就是抽象工廠,具體如何建立產品類是由具體的實現工廠concretecreator完成的。
女媧造人的例子,女媧可以看成是乙個場景類。human介面看成是產品,而下面的三個實現類則可以看成是具體的產品。abstracthumanfactory看成是creator,humanfactory看成是具體的creator。類圖如下:
human介面**如下:
package com.cqu.factory_method;
/*** 類說明
*/public inte***ce human
blackhuman**:
package com.cqu.factory_method;
/*** 類說明
*/public class blackhuman implements human
@override
public void talk()
}
whitehuman:
package com.cqu.factory_method;
/*** 類說明
*/public class whitehuman implements human
@override
public void talk()
}
yellowhuman:
package com.cqu.factory_method;
/*** 類說明
*/public class yellowhuman implements human
@override
public void talk()
}
abstracthumanfactory:
package com.cqu.factory_method;
/*** 類說明
*/public abstract class abstracthumanfactory
humanfactory:
package com.cqu.factory_method;
/*** 類說明
*/public class humanfactory extends abstracthumanfactory catch (instantiationexception | illegalacces***ception | classnotfoundexception e)
return (t) human;
}}
女媧類(模擬場景類)nvwa:
package com.cqu.factory_method;
/*** 類說明
*/public class nvwa
}
執行結果:
建立白人:
我的**是白色的
我會說英語
建立黑人
我的**是黑色的
黑人的話別人聽不懂
建立黃人
我的**是黃色的
我說的是漢語
*注:該工廠方法模式為看秦小波著《設計模式之禪》總結,詳情請看該書工廠方法模式一章。 工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
工廠方法模式 工廠方法模式 二
工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...
工廠方法模式(一) 簡單工廠方法模式
ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...