下面例子中鼠標,鍵盤,耳麥爲產品,惠普,戴爾爲工廠。
簡單工廠模式
簡單工廠模式不是 23 種設計模式裏的一種,簡而言之,就是有一個專門生產某個產品的類。
比如下圖中的鼠標工廠,專業生產鼠標,給參數 0,生產戴爾鼠標,給參數 1,生產惠普鼠標。
工廠模式
- 工廠模式也就是鼠標工廠是個父類,有生產鼠標這個接口。
- 戴爾鼠標工廠,惠普鼠標工廠繼承它,可以分別生產戴爾鼠標,惠普鼠標。
- 生產哪種鼠標不再由參數決定,而是創建鼠標工廠時,由戴爾鼠標工廠創建。後續直接調用鼠標工廠.生產鼠標()即可
抽象工廠模式
- 抽象工廠模式也就是不僅生產鼠標,同時生產鍵盤。
- 也就是 PC 廠商是個父類,有生產鼠標,生產鍵盤兩個接口。
- 戴爾工廠,惠普工廠繼承它,可以分別生產戴爾鼠標+戴爾鍵盤,和惠普鼠標+惠普鍵盤。
- 創建工廠時,由戴爾工廠創建。後續工廠.生產鼠標()則生產戴爾鼠標,工廠.生產鍵盤()則生產戴爾鍵盤。
在抽象工廠模式中,假設我們需要增加一個工廠
- 假設我們增加華碩工廠,則我們需要增加華碩工廠,和戴爾工廠一樣,繼承 PC 廠商。
- 之後創建華碩鼠標,繼承鼠標類。創建華碩鍵盤,繼承鍵盤類即可。
在抽象工廠模式中,假設我們需要增加一個產品
- 假設我們增加耳麥這個產品,則首先我們需要增加耳麥這個父類,再加上戴爾耳麥,惠普耳麥這兩個子類。
- 之後在PC廠商這個父類中,增加生產耳麥的接口。
- 最後在戴爾工廠,惠普工廠這兩個類中,分別實現生產戴爾耳麥,惠普耳麥的功能。