【设计模式 01】简单工厂模式(Simple factory pattern)
生活随笔
收集整理的這篇文章主要介紹了
【设计模式 01】简单工厂模式(Simple factory pattern)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
簡單工廠模式
可以根據(jù)參數(shù)的不同返回不同類的實例
參考:
- CSDN|簡單工廠模式
簡單工廠通過傳給工廠類的參數(shù)的不同,返回不同的對象,包括三部分組成:
為什么使用簡單工廠:
簡單工廠的缺點:
適用場景
工廠類負責創(chuàng)建的對象比較少:由于創(chuàng)建的對象較少,不會造成工廠方法中的業(yè)務邏輯太過復雜。
客戶端只知道傳入工廠類的參數(shù),對于如何創(chuàng)建對象不關心:客戶端既不需要關心創(chuàng)建細節(jié),甚至連類名都不需要記住,只需要知道類型所對應的參數(shù)。
例:
如果需要獲取不同的手機對象,就可以使用簡單工廠,具體的手機對象依賴于CPU, Camera等,通過簡單工廠的封裝,客戶端獲取 Phone 對象時就不需要了解具體的 ”生產(chǎn)過程“了.
實例化CPU, Camera 等配件時,也應該使用簡單工廠。
package pers.junebao.simple_factory;import pers.junebao.simple_factory.fitting.*; import pers.junebao.simple_factory.phone.Honor; import pers.junebao.simple_factory.phone.OnePlus; import pers.junebao.simple_factory.phone.Phone;public class PhoneFactory {/*** 一個用來產(chǎn)生 Phone 對象的工廠方法* @param name 根據(jù) name 產(chǎn)生不同的 Phone 的子類對象* @return 返回實例化后的對象,name 不匹配返回 null*/public static Phone getPhone(String name) {if(name.toLowerCase().equals("oneplus")){// TODO:使用簡單工廠重構CPU cpu = new Qualcomm();Camera camera = new Sony();return new OnePlus(cpu, camera);} else if (name.toLowerCase().equals("honor")) {CPU cpu = new Kirin();Camera camera = new Leica();return new Honor(cpu, camera);} else {return null;}} } package pers.junebao.simple_factory;import pers.junebao.simple_factory.phone.Phone;public class Consumer {public static void main(String[] args) {Phone phone = PhoneFactory.getPhone("Honor");assert phone != null;phone.printConfig();} }GitHub | 完整代碼
總結
以上是生活随笔為你收集整理的【设计模式 01】简单工厂模式(Simple factory pattern)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大流应用实验
- 下一篇: Centos 8 Linux 安装 微信