標籤:style blog http color 使用 width
在開發當中我們經常會使用三個設計模式,來幫我們解決項目代碼的可擴充性。
在簡單工廠,Factory 方法,抽象工廠這三個設計模式當中,代碼其實都很簡單,主要是要理解運用。
簡單工廠:
簡單工廠說白了,就是利用Switch根據傳遞的參數,進行執行個體化。
Factory 方法:
Factory 方法,為解決每次都去增加Swicth的簡單工廠的升級。為每一個產品提供一個工廠類。
抽象工廠:
抽象工廠,我覺得也是對Factory 方法的再次升級,Factory 方法每次只能創作一個產品,而抽象工廠就是產品線的產品族。
總結下,從網上找到一個大牛的回複:
我認為不能說簡單原廠模式”對於增加新的產品,無能為力“,因為如果簡單工廠是用來生產”東西“的,那任何”東西“的子類,比如汽車,單車,輪船,洗髮水都是可以被生產的,但此處簡單工廠的壓力太大了啊,任何”東西“的子類都可以被生產,負擔太重,所以一般對簡單工廠類也有種稱呼,叫”上帝類“。而Factory 方法模式就很好的減輕了工廠類的負擔,把某一類/某一種東西交由一個工廠生產,同時增加某一類”東西“並不需要修改工廠類,只需要添加生產這類”東西“的工廠即可,使得工廠類符合開放-封閉原則。對於”東西“的分類,有時候不能光是橫向的分類,從另一個角度也是可以分類的,不知道這句話的意思能不能懂,打個比方:汽車可以根據品牌分為平治、奧迪,也可以根據類別分為普通三廂車和SUV車,如果用Factory 方法來描述的話,平治車工廠有一個方法即生產平治車,奧迪車工廠有一個方法生產奧迪車,但在有多重分類的情形下,這樣寫已經不夠用,不符合實際了,這個時候需要用到抽象原廠模式,即奧迪車工廠有兩個方法,一個方法是生產普通三廂奧迪車,另一個方法是生產SUV奧迪車。平治車工廠有兩個方法,一個方法是生產普通三廂平治車,另一個方法是生產SUV平治車。上面即Factory 方法模式和抽象原廠模式的應用情境,因為這兩者很像,所以概念上不容易區分,可以這麼說,Factory 方法模式是一種極端情況的抽象原廠模式,而抽象原廠模式可以看成是Factory 方法模式的一種推廣。再說下抽象原廠模式,此處的抽象工廠介面應該是有兩個方法,一個是產生普通三廂車,一個是生產SUV車,可以說,生產的”東西“已經被限定住了,因此你不能生產某品牌汽車外的其他”東西“,因而可以理解成使用抽象原廠模式不能新增新的”東西“(在簡單工廠和Factory 方法中理論上都是可以新增任意”東西“的)
感覺說的很對