重頭開始學23種設計模式:三大工廠(簡單工廠,Factory 方法,抽象工廠)

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   width   

在開發當中我們經常會使用三個設計模式,來幫我們解決項目代碼的可擴充性。

在簡單工廠,Factory 方法,抽象工廠這三個設計模式當中,代碼其實都很簡單,主要是要理解運用。

簡單工廠:

簡單工廠說白了,就是利用Switch根據傳遞的參數,進行執行個體化。

 

Factory 方法:

Factory 方法,為解決每次都去增加Swicth的簡單工廠的升級。為每一個產品提供一個工廠類。

 

抽象工廠:

抽象工廠,我覺得也是對Factory 方法的再次升級,Factory 方法每次只能創作一個產品,而抽象工廠就是產品線的產品族。

總結下,從網上找到一個大牛的回複:

我認為不能說簡單原廠模式”對於增加新的產品,無能為力“,因為如果簡單工廠是用來生產”東西“的,那任何”東西“的子類,比如汽車,單車,輪船,洗髮水都是可以被生產的,但此處簡單工廠的壓力太大了啊,任何”東西“的子類都可以被生產,負擔太重,所以一般對簡單工廠類也有種稱呼,叫”上帝類“。而Factory 方法模式就很好的減輕了工廠類的負擔,把某一類/某一種東西交由一個工廠生產,同時增加某一類”東西“並不需要修改工廠類,只需要添加生產這類”東西“的工廠即可,使得工廠類符合開放-封閉原則。對於”東西“的分類,有時候不能光是橫向的分類,從另一個角度也是可以分類的,不知道這句話的意思能不能懂,打個比方:汽車可以根據品牌分為平治、奧迪,也可以根據類別分為普通三廂車和SUV車,如果用Factory 方法來描述的話,平治車工廠有一個方法即生產平治車,奧迪車工廠有一個方法生產奧迪車,但在有多重分類的情形下,這樣寫已經不夠用,不符合實際了,這個時候需要用到抽象原廠模式,即奧迪車工廠有兩個方法,一個方法是生產普通三廂奧迪車,另一個方法是生產SUV奧迪車。平治車工廠有兩個方法,一個方法是生產普通三廂平治車,另一個方法是生產SUV平治車。上面即Factory 方法模式和抽象原廠模式的應用情境,因為這兩者很像,所以概念上不容易區分,可以這麼說,Factory 方法模式是一種極端情況的抽象原廠模式,而抽象原廠模式可以看成是Factory 方法模式的一種推廣。再說下抽象原廠模式,此處的抽象工廠介面應該是有兩個方法,一個是產生普通三廂車,一個是生產SUV車,可以說,生產的”東西“已經被限定住了,因此你不能生產某品牌汽車外的其他”東西“,因而可以理解成使用抽象原廠模式不能新增新的”東西“(在簡單工廠和Factory 方法中理論上都是可以新增任意”東西“的)

感覺說的很對

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.