設計模式--簡單工廠、工廠方法和抽象工廠


簡單工廠、工廠方法和抽象工廠三種設計模式都用來幫助我們將對象的實例化部分抽取出來,優化系統結構,在開發中經常使用。三者既有區別,也有聯系,今天來對這三種設計模式做一個簡單的記錄。

概述

  • 簡單工廠:用來生產同一等級結構中的任意產品(對於增加新的產品,需要修改工廠)
  • 工廠方法:用來生產同一等級結構中的固定產品(支持增加新的產品)
  • 抽象工廠:用來生產不同產品族的全部產品(支持增加新的產品族,不支持增加新的產品)

簡單工廠

簡單工廠

一般來說,利用一個靜態方法,即將createProduct方法設置為static,將我們所需要的產品類型傳入函數參數中(type),在方法內部利用switch/case幫助我們創建產品(Product)。
對於這種方式,如果我們想要增加新的產品,首先需要實現Product接口,其次還需要修改SimpleFactory下的createProduct方法。

工廠方法

工廠方法

可以看到與簡單工廠的不同,我們每一個FactoryMethod的實現類只對應生成一種產品,就是說,這里是生成固定產品的。
對於增加新的產品,我們只需實現Product接口,並創建一個新的FactoryMethod實現類去幫助我們創建該產品,而不需要修改其他代碼。

抽象工廠

抽象工廠

對於抽象工廠來說,它被用來生產不同產品族的全部產品。可以這么理解,ProductA和ProductB是兩個不同的品牌,而這兩個品牌之下都擁有兩個相同類型的產品One和Two。例如華為和中興是兩個不同的品牌,它們旗下均生產手機和路由器兩個系列的產品,那么華為和中興就對應的是A和B,而手機和路由器就對應了One和Two。
這樣我們想要增加一個新的產品族,即一個新的系列Three時,只需創建FactoryThree實現AbstractFactory,同時在相應的品牌之下添加新系列的產品即可。但我們需要添加新的品牌時就需要改動代碼了。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com