工廠方法模式

2021-07-11 06:57:36 字數 2444 閱讀 9110

2.abstracthumanfactory是乙個抽象類, 定義了乙個八卦爐具有的整體功能, humanfactory為實現類, 完成具體的任務——建立人類; human介面是人類的總稱, 其三個實現類分別為三類人種;

3.人類總稱

public inte***ce human

4.黑色人種

public class blackhuman implements human 

public void talk()

}

5.黃色人種

public class yellowhuman implements human 

public void talk()

}

6.所有的人種定義完畢, 下一步就是定義乙個八卦爐, 然後燒製人類。 我們想象一下, 女

媧最可能給八卦爐下達什麼樣的生產命令呢? 應該是「給我生產出乙個黃色人種

( yellowhuman類) 」, 而不會是「給我生產乙個會走、 會跑、 會說話、 **是黃色的人種」,

因為這樣的命令增加了交流的成本, 作為乙個生產的管理者, 只要知道生產什麼就可以了,

而不需要事物的具體資訊。 通過分析, 我們發現八卦爐生產人類的方法輸入引數型別應該是

human介面的實現類, 這也解釋了為什麼類圖上的abstracthumanfactory抽象類中createhuman

方法的引數為class型別

7.抽象人類建立工廠

public abstract class abstracthumanfactory

注意, 我們在這裡採用了泛型( generic) , 通過定義泛型對createhuman的輸入引數產

生兩層限制:

● 必須是class型別;

● 必須是human的實現類。

其中的"t"表示的是, 只要實現了human介面的類都可以作為引數, 泛型是jdk 1.5中的

乙個非常重要的新特性, 它減少了物件間的轉換, 約束其輸入引數型別, 對collection集合下

的實現類都可以定義泛型。

8.目前女媧只有乙個八卦爐, 其實現生產人類的方法

人類建立工廠

public class humanfactory extends abstracthumanfactory  catch (exception e) 

return (t)human;

}}

9.女媧類

public class nvwa 

}

1.在工廠方法模式中, 抽象產品類product負責定義產品的共性, 實現對事物最抽象的定義; creator為抽象建立類, 也就是抽象工廠, 具體如何建立產品類是由具體的實現工廠concretecreator完成的。

2.抽象產品類

public abstract class product 

//抽象方法

public abstract void method2();

}

具體的產品類可以有多個, 都繼承於抽象產品類

3.具體產品類

public class concreteproduct1 extends product 

}public class concreteproduct2 extends product

}

4.抽象工廠類負責定義產品物件的產生

抽象工廠類

public abstract class creator

5.具體如何產生乙個產品的物件, 是由具體的工廠類實現的

具體工廠類

public class concretecreator extends creator  

catch (exception e)

return (t)product;

}}

6.場景類

public class client 

}

1.簡單工廠模式中的工廠類

public class humanfactory  catch (exception e) 

return (t)human;

}}

2.簡單工廠模式中的場景類

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 ...