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