1. 程式人生 > >簡單工廠模式、工廠模式和抽象工廠模式區別

簡單工廠模式、工廠模式和抽象工廠模式區別

下面例子中滑鼠,鍵盤,耳麥為產品,惠普,戴爾為工廠。

簡單工廠模式(面向單個產品,不符合開閉原則,要點:產品面向介面)

簡單工廠模式不是 23 種裡的一種,簡而言之,就是有一個專門生產某個產品的類。

比如下圖中的滑鼠工廠,專業生產滑鼠,給引數 0,生產戴爾滑鼠,給引數 1,生產惠普滑鼠。

工廠模式(面向單個產品,符合開閉原則,產品多的話工廠類過多,要點:產品和工廠都面向介面)

工廠模式也就是滑鼠工廠是個父類,有生產滑鼠這個介面。

戴爾滑鼠工廠,惠普滑鼠工廠繼承它,可以分別生產戴爾滑鼠,惠普滑鼠。

生產哪種滑鼠不再由引數決定,而是建立滑鼠工廠時,由戴爾滑鼠工廠建立。

後續直接呼叫滑鼠工廠.生產滑鼠()即可

抽象工廠模式(面向多個產品,即產品族,不符合開閉原則,有“開閉原則”的傾斜性,可自行百度,要點:產品和工廠都面向介面且工廠得能建立多個產品)

抽象工廠模式也就是不僅生產滑鼠,同時生產鍵盤。

也就是 PC 廠商是個父類,有生產滑鼠,生產鍵盤兩個介面。

戴爾工廠,惠普工廠繼承它,可以分別生產戴爾滑鼠+戴爾鍵盤,和惠普滑鼠+惠普鍵盤。

建立工廠時,由戴爾工廠建立。

後續工廠.生產滑鼠()則生產戴爾滑鼠,工廠.生產鍵盤()則生產戴爾鍵盤。

在抽象工廠模式中,假設我們需要增加一個工廠

假設我們增加華碩工廠,則我們需要增加華碩工廠,和戴爾工廠一樣,繼承 PC 廠商。

之後建立華碩滑鼠,繼承滑鼠類。建立華碩鍵盤,繼承鍵盤類即可。

在抽象工廠模式中,假設我們需要增加一個產品

假設我們增加耳麥這個產品,則首先我們需要增加耳麥這個父類,再加上戴爾耳麥,惠普耳麥這兩個子類。

之後在PC廠商這個父類中,增加生產耳麥的介面。最後在戴爾工廠,惠普工廠這兩個類中,分別實現生產戴爾耳麥,惠普耳麥的功能。 以上。

“開閉原則”的傾斜性參考博文:https://blog.csdn.net/Mark_LQ/article/details/45132995