簡單工廠模式、工廠模式和抽象工廠模式區別
阿新 • • 發佈:2018-11-06
下面例子中滑鼠,鍵盤,耳麥為產品,惠普,戴爾為工廠。
簡單工廠模式(面向單個產品,不符合開閉原則,要點:產品面向介面)
簡單工廠模式不是 23 種裡的一種,簡而言之,就是有一個專門生產某個產品的類。
比如下圖中的滑鼠工廠,專業生產滑鼠,給引數 0,生產戴爾滑鼠,給引數 1,生產惠普滑鼠。
工廠模式(面向單個產品,符合開閉原則,產品多的話工廠類過多,要點:產品和工廠都面向介面)
工廠模式也就是滑鼠工廠是個父類,有生產滑鼠這個介面。
戴爾滑鼠工廠,惠普滑鼠工廠繼承它,可以分別生產戴爾滑鼠,惠普滑鼠。
生產哪種滑鼠不再由引數決定,而是建立滑鼠工廠時,由戴爾滑鼠工廠建立。
後續直接呼叫滑鼠工廠.生產滑鼠()即可
抽象工廠模式(面向多個產品,即產品族,不符合開閉原則,有“開閉原則”的傾斜性,可自行百度,要點:產品和工廠都面向介面且工廠得能建立多個產品)
抽象工廠模式也就是不僅生產滑鼠,同時生產鍵盤。
也就是 PC 廠商是個父類,有生產滑鼠,生產鍵盤兩個介面。
戴爾工廠,惠普工廠繼承它,可以分別生產戴爾滑鼠+戴爾鍵盤,和惠普滑鼠+惠普鍵盤。
建立工廠時,由戴爾工廠建立。
後續工廠.生產滑鼠()則生產戴爾滑鼠,工廠.生產鍵盤()則生產戴爾鍵盤。
在抽象工廠模式中,假設我們需要增加一個工廠
假設我們增加華碩工廠,則我們需要增加華碩工廠,和戴爾工廠一樣,繼承 PC 廠商。
之後建立華碩滑鼠,繼承滑鼠類。建立華碩鍵盤,繼承鍵盤類即可。
在抽象工廠模式中,假設我們需要增加一個產品
假設我們增加耳麥這個產品,則首先我們需要增加耳麥這個父類,再加上戴爾耳麥,惠普耳麥這兩個子類。
之後在PC廠商這個父類中,增加生產耳麥的介面。最後在戴爾工廠,惠普工廠這兩個類中,分別實現生產戴爾耳麥,惠普耳麥的功能。 以上。
“開閉原則”的傾斜性參考博文:https://blog.csdn.net/Mark_LQ/article/details/45132995