站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        設(shè)計(jì)模式 – 工廠模式

        • 工廠方法模式一種創(chuàng)建對(duì)象的模式,它被廣泛應(yīng)用在jdk中以及Spring和Struts框架中;
        • 工廠方法模式基于”輸入”,應(yīng)用在超類和多個(gè)子類之間的情況,這種模式將創(chuàng)建對(duì)象的責(zé)任轉(zhuǎn)移到工廠類;
        • 首先讓我們學(xué)習(xí)一下如何在Java中應(yīng)用工廠方法模式并且學(xué)習(xí)到工廠方法的優(yōu)點(diǎn),另外工廠方法模式也廣泛應(yīng)用在jdk中;
        • 超類可以是接口、抽象類、父類,本例中將通過重寫 toString() 方法來解釋工廠方法模式;

        實(shí)例

        package com.journaldev.design.model; public abstract class Computer { public abstract String getRAM(); public abstract String getHDD(); public abstract String getCPU(); @Override public String toString(){ return "RAM= "+this.getRAM()+", HDD="+this.getHDD()+", CPU="+this.getCPU(); } }

        工廠設(shè)計(jì)模式子類

        假設(shè)子類 PC 和 Server 實(shí)現(xiàn)了 Computer:

        實(shí)例

        package com.journaldev.design.model; public class PC extends Computer { private String ram; private String hdd; private String cpu; public PC(String ram, String hdd, String cpu){ this.ram=ram; this.hdd=hdd; this.cpu=cpu; } @Override public String getRAM() { return this.ram; } @Override public String getHDD() { return this.hdd; } @Override public String getCPU() { return this.cpu; } }

        Server 也實(shí)現(xiàn)了 Computer:

        實(shí)例

        package com.journaldev.design.model; public class Server extends Computer { private String ram; private String hdd; private String cpu; public Server(String ram, String hdd, String cpu){ this.ram=ram; this.hdd=hdd; this.cpu=cpu; } @Override public String getRAM() { return this.ram; } @Override public String getHDD() { return this.hdd; } @Override public String getCPU() { return this.cpu; } }

        工廠類

        現(xiàn)在有了多個(gè)子類和超類,接下來可以創(chuàng)建工廠類了:

        實(shí)例

        package com.journaldev.design.factory; import com.journaldev.design.model.Computer; import com.journaldev.design.model.PC; import com.journaldev.design.model.Server; public class ComputerFactory { public static Computer getComputer(String type, String ram, String hdd, String cpu){ if("PC".equalsIgnoreCase(type)) return new PC(ram, hdd, cpu); else if("Server".equalsIgnoreCase(type)) return new Server(ram, hdd, cpu); return null; } }

        需要重點(diǎn)指出的是:

        • 工廠類可以是單例的,getComputer 可以是靜態(tài)的;
        • getComputer 是工廠類的方法,且基于相同的參數(shù)類型返回了不同的對(duì)象;

        設(shè)計(jì)模式 – 工廠模式

        接下來是一個(gè)簡(jiǎn)單的測(cè)試客戶端程序,它使用上面的工廠設(shè)計(jì)模式實(shí)現(xiàn)。

        實(shí)例

        package com.journaldev.design.test; import com.journaldev.design.abstractfactory.PCFactory; import com.journaldev.design.abstractfactory.ServerFactory; import com.journaldev.design.factory.ComputerFactory; import com.journaldev.design.model.Computer; public class TestFactory { public static void main(String[] args) { Computer pc = ComputerFactory.getComputer("pc","2 GB","500 GB","2.4 GHz"); Computer server = ComputerFactory.getComputer("server","16 GB","1 TB","2.9 GHz"); System.out.println("Factory PC Config::"+pc); System.out.println("Factory Server Config::"+server); } }

        輸出:

        Factory PC Config::RAM= 2 GB, HDD=500 GB, CPU=2.4 GHz  Factory Server Config::RAM= 16 GB, HDD=1 TB, CPU=2.9 GHz

        工廠設(shè)計(jì)模式的優(yōu)點(diǎn)

        • 面向接口編程,體現(xiàn)了面向?qū)ο蟮乃枷耄?/li>
        • 將創(chuàng)建對(duì)象的工作轉(zhuǎn)移到了工廠類;

        JDK 中的工廠設(shè)計(jì)模式實(shí)例

        • java.util.Calendar, ResourceBundle and NumberFormat getInstance() 使用了工廠方法模式;
        • valueOf() 在包裝類中,如Boolean, Integer 也使用了工廠方法模式;

        譯文:https://www.jianshu.com/p/5d52e9ce7358

        原文:https://www.journaldev.com/1392/factory-design-pattern-in-java

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产成人无码精品一区在线观看| 亚洲精品无码不卡| 国产AV国片精品有毛| 国产亚洲精品看片在线观看| 精品无码人妻一区二区三区| 国产色精品vr一区区三区| 97久久精品人妻人人搡人人玩| 亚洲AV永久无码精品一区二区国产 | 久久亚洲精品中文字幕| 国产精品永久久久久久久久久| 91精品在线播放| 欧洲成人午夜精品无码区久久 | 久久国产成人亚洲精品影院| 精品国产福利久久久| 久久精品天天中文字幕人妻| 午夜精品久久久久久影视777| 国产AV国片精品一区二区 | 日韩精品无码熟人妻视频| 男人的天堂精品国产一区| 99精品福利国产在线| 精品亚洲综合久久中文字幕| 久久亚洲精精品中文字幕| 正在播放国产精品每日更新| 久久精品国产精品亚洲人人| 桃花岛精品亚洲国产成人 | 色久综合网精品一区二区| 欧美黑人巨大videos精品| 国产偷伦精品视频| 国产精品五月天强力打造| 99精品国产一区二区| 91精品国产色综久久| 2023国产精品自拍| Xx性欧美肥妇精品久久久久久| 亚洲精品电影网| 亚洲精品综合一二三区在线| 最新国产精品亚洲| 国产精品麻豆VA在线播放| 国产网红主播无码精品| 久久se精品一区二区影院| 日韩精品欧美国产在线| 四虎精品免费永久免费视频|