設計模式之簡單工廠模式 (一) 簡單工廠模式

簡單工廠模式

基本定義:

簡單工廠模式又稱之爲靜態工廠方法,屬於創建型模式。在簡單工廠模式中,可以根據傳遞的參數不同,返回不同類的實例。簡單工廠模式定義了一個類,這個類專門用於創建其他類的實例,這些被創建的類都有一個共同的父類。

模式結構:

1. Factory:工廠角色。專門用於創建實例類的工廠,提供一個方法,該方法根據傳遞的參數不同返回不同類的具體實例。

2. Product:抽象產品角色。爲所有產品的父類。

3. ConcreteProduct:具體的產品角色。

代碼實現:

1、Product 抽象產品類

···

/*** @Description Product 抽象產品類

* @Author yanyuan

* @Date 18:27 2020/4/14

* @Version 1.0

**/publicinterface Phone {void make();void call();

}

···

2、Concrete Product 具體產品類

···

import lombok.extern.slf4j.Slf4j;/*** @Description 華爲手機

* @Author yanyuan

* @Date 18:30 2020/4/14

* @Version 1.0

**/@Slf4jpublicclassHuaweiPhoneimplements Phone {

@Overridepublicvoid make() {

log.info("華爲手機制作完成");

}

@Overridepublicvoid call() {

log.info("華爲手機撥打電話");

}

}

···

···

/*** @Description Concrete Product 具體產品類

* @Author yanyuan

* @Date 18:28 2020/4/14

* @Version 1.0

**/@Slf4jpublicclassIPhoneimplements Phone{

@Overridepublicvoid make() {

log.info("製作iPhone手機");

}

@Overridepublicvoid call() {

log.info("iPhone手機撥打電話");

}

}

···

3、Factory 工廠角色類

···

import lombok.extern.slf4j.Slf4j;/*** @Description Factory 工廠角色類

* @Author yanyuan

* @Date 22:06 2020/4/14

* @Version 1.0

**/@Slf4jpublicclass SimpleFactory {public Phone createPhone(String brand){

Phone phone =null;switch (brand){case"HUAWEI":

phone =new HuaweiPhone();break;case"IPHONE":

phone =new IPhone();break;default:

log.error("暫不支持該品牌手機");break;

}return phone;

}

}

···

4、測試類

···

/*** @Description 簡單工廠模式測試類

* @Author yanyuan

* @Date 22:10 2020/4/14

* @Version 1.0

**/publicclass Test {publicstaticvoid main(String[] args) {

SimpleFactory factory =new SimpleFactory();

Phone huaweiPhone = factory.createPhone("HUAWEI");

huaweiPhone.make();

huaweiPhone.call();

Phone iPhone = factory.createPhone("IPHONE");

iPhone.make();

iPhone.call();

}

}

···

輸出結果

22:16:19.325 [main] INFO com.yanyuan.gof.build.simpleFactory.v2.HuaweiPhone - 華爲手機制作完成

22:16:19.343 [main] INFO com.yanyuan.gof.build.simpleFactory.v2.HuaweiPhone - 華爲手機撥打電話

22:16:19.344 [main] INFO com.yanyuan.gof.build.simpleFactory.v2.IPhone - 製作iPhone手機

22:16:19.344 [main] INFO com.yanyuan.gof.build.simpleFactory.v2.IPhone - iPhone手機撥打電話

優缺點

優點

實現了對責任的分隔,提供了專門工廠類創建對象。

用戶無需知道具體產品名。

通過配置文件方式,可以在不修改客戶端(消費端)代碼情況下變更/增加新產品,在一定程序上提高了系統的靈活性。

缺點

由於工廠類集中了所以產品創建邏輯,一旦不能正常工作,整個系統受影響。

使用簡單工廠模式將增加系統類的個數,在一定程度上增加了系統的複雜度和理解。

系統擴展困難,一旦添加了新產品就不得不修改工廠邏輯,在產品類型較多時,有可能造成工廠邏輯過於複雜,不利於系統的擴展和維護。

總結

簡單工廠模式的要點就在於當你需要什麼,只需要知道正確參數,就可以獲取你所需要的對象,無需知道其創建細節。

簡單工廠模式最大的優點在於實現對象的創建和對象的分離,但是如果產品過多時,會導致工廠代碼複雜。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章