国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java設(shè)計(jì)模式【工廠方法模式】

這篇具有很好參考價(jià)值的文章主要介紹了java設(shè)計(jì)模式【工廠方法模式】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

java設(shè)計(jì)模式【工廠方法模式】

java設(shè)計(jì)模式【工廠方法模式】

工廠方法模式

工廠方法模式FACTORY METHOD)是一種常用的類創(chuàng)建型設(shè)計(jì)模式,此模式的核心精神是封裝類中變化的部分,提取其中個(gè)性化善變的部分為獨(dú)立類,通過(guò)依賴注入以達(dá)到解耦、復(fù)用和方便后期維護(hù)拓展的目的。它的核心結(jié)構(gòu)有四個(gè)角色,分別是抽象工廠;具體工廠;抽象產(chǎn)品;具體產(chǎn)品。

抽象工廠角色負(fù)責(zé)定義產(chǎn)品的創(chuàng)建接口,即產(chǎn)品的創(chuàng)建過(guò)程應(yīng)當(dāng)被推遲到子類中實(shí)現(xiàn)。具體工廠角色則實(shí)現(xiàn)這些創(chuàng)建接口,并負(fù)責(zé)實(shí)際創(chuàng)建產(chǎn)品的工作。抽象產(chǎn)品角色是工廠方法模式的核心,它定義了一個(gè)產(chǎn)品的接口,但并不實(shí)現(xiàn)具體的產(chǎn)品邏輯。具體產(chǎn)品角色則實(shí)現(xiàn)這些接口并負(fù)責(zé)具體的產(chǎn)品邏輯。

使用工廠方法模式可以在不修改具體工廠角色的情況下引入新的產(chǎn)品,從而簡(jiǎn)化了系統(tǒng)的設(shè)計(jì),并提高了系統(tǒng)的可擴(kuò)展性。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  1. 系統(tǒng)的可擴(kuò)展性非常好。因?yàn)樵谔砑有庐a(chǎn)品時(shí),只需要添加新的具體工廠和具體產(chǎn)品,而不需要修改現(xiàn)有系統(tǒng)的代碼。這樣就保證了系統(tǒng)的可擴(kuò)展性。

  2. 易于維護(hù)和管理。由于工廠方法模式將創(chuàng)建產(chǎn)品的邏輯推遲到子類中實(shí)現(xiàn),因此可以更容易地進(jìn)行維護(hù)和管理。子類可以在不改變父類接口的情況下添加新的特性,從而減少了系統(tǒng)的開銷。

  3. 提高了系統(tǒng)的可靠性。因?yàn)樵谔砑有庐a(chǎn)品時(shí),只需要修改具體工廠類,而不需要修改客戶端代碼。這樣可以減少因客戶端代碼變化而導(dǎo)致的系統(tǒng)崩潰的可能性。

缺點(diǎn):

  1. 增加了系統(tǒng)的復(fù)雜度。在實(shí)現(xiàn)工廠方法模式時(shí),需要引入抽象層,這樣就增加了系統(tǒng)的抽象性和理解難度,同時(shí)也增加了實(shí)現(xiàn)的難度。

  2. 需要更多的代碼編寫。使用工廠方法模式需要編寫新的具體工廠類和具體產(chǎn)品類,這樣就會(huì)增加代碼的復(fù)雜度和維護(hù)的難度。

使用場(chǎng)景

  1. 產(chǎn)品具有復(fù)雜的結(jié)構(gòu)和層次關(guān)系,需要在多個(gè)子類之間共享某些共性邏輯。使用工廠方法模式可以將這些共性邏輯提取出來(lái),作為一個(gè)獨(dú)立的類進(jìn)行封裝,從而簡(jiǎn)化代碼并提高系統(tǒng)的可擴(kuò)展性。

  2. 系統(tǒng)需要提供一些通用的功能,但是這些功能可能會(huì)在不同的產(chǎn)品中被重復(fù)使用。使用工廠方法模式可以將這些通用功能提取出來(lái),作為一個(gè)獨(dú)立的類進(jìn)行封裝,從而降低系統(tǒng)的開發(fā)成本。

  3. 系統(tǒng)中需要使用組件化的設(shè)計(jì)思想,將不同的組件封裝成獨(dú)立的類。使用工廠方法模式可以將這些組件的創(chuàng)建過(guò)程推遲到子類中實(shí)現(xiàn),從而簡(jiǎn)化代碼并提高系統(tǒng)的可維護(hù)性。

  4. 系統(tǒng)需要支持動(dòng)態(tài)添加和刪除產(chǎn)品。使用工廠方法模式可以在不修改客戶端代碼的情況下動(dòng)態(tài)添加和刪除產(chǎn)品,從而提高系統(tǒng)的靈活性和可擴(kuò)展性。

具體實(shí)現(xiàn)

以下以產(chǎn)品A,產(chǎn)品B為例實(shí)現(xiàn)工廠方法模式。

java設(shè)計(jì)模式【工廠方法模式】

抽象工廠

抽象工廠定義產(chǎn)品的創(chuàng)建接口返回抽象產(chǎn)品

/**
 * 抽象工廠類
 */
public interface IFactory {

    /**
     * 定義創(chuàng)建產(chǎn)品接口
     *
     * @return 抽象產(chǎn)品
     */
    IProduct getInstance();

}

具體工廠

具體工廠繼承實(shí)現(xiàn)工廠實(shí)現(xiàn)創(chuàng)建產(chǎn)品接口返回具體的產(chǎn)品

產(chǎn)品A工廠類

/**
 * @author physicx
 * @date 2023/5/15 上午10:12
 * @desc 產(chǎn)品A具體工廠類
 * Created with IntelliJ IDEA
 */
public class ProductAFactory implements IFactory {

    /**
     * 返回具體產(chǎn)品
     *
     * @return 產(chǎn)品A
     */
    @Override
    public IProduct getInstance() {
        return new ProductA();
    }
}

產(chǎn)品B工廠類

/**
 * @author physicx
 * @date 2023/5/15 上午10:18
 * @desc 產(chǎn)品B具體工廠
 * Created with IntelliJ IDEA
 */
public class ProductBFactory implements IFactory {

    /**
     * 返回具體產(chǎn)品
     *
     * @return 產(chǎn)品B
     */
    @Override
    public IProduct getInstance() {
        return new ProductB();
    }
}

抽象產(chǎn)品

抽象產(chǎn)品接口定義產(chǎn)品的默認(rèn)方法和各產(chǎn)品實(shí)現(xiàn)有差異的方法

/**
 * 抽象產(chǎn)品類
 */
public interface IProduct {

    /**
     * 產(chǎn)品公共方法
     */
    default void publicMethod() {
        System.out.println("公共方法");
    }

    /**
     * 各個(gè)產(chǎn)品有差異方法,子類具體實(shí)現(xiàn)
     */
    void printInfo();

}

具體產(chǎn)品

具體產(chǎn)品實(shí)現(xiàn)抽象產(chǎn)品,各個(gè)產(chǎn)品對(duì)方法做自己的具體實(shí)現(xiàn)

產(chǎn)品A

/**
 * @author physicx
 * @date 2023/5/15 上午10:13
 * @desc 產(chǎn)品A
 * Created with IntelliJ IDEA
 */
public class ProductA implements IProduct {

    private final static String NAME = "產(chǎn)品A";

    /**
     * 輸出產(chǎn)品信息
     */
    @Override
    public void printInfo() {
        System.out.println("產(chǎn)品名稱:" + NAME);
    }
}

產(chǎn)品B

/**
 * @author physicx
 * @date 2023/5/15 上午10:17
 * @desc 產(chǎn)品B
 * Created with IntelliJ IDEA
 */
public class ProductB implements IProduct {

    private final static String NAME = "產(chǎn)品B";

    /**
     * 輸出產(chǎn)品信息
     */
    @Override
    public void printInfo() {
        System.out.println("產(chǎn)品名稱:" + NAME);
    }
}

調(diào)用示例

public static void main(String[] args) {
        //產(chǎn)品A工廠方法調(diào)用
        IProduct productA = new ProductAFactory().getInstance();
        productA.printInfo();
        //產(chǎn)品工廠方法調(diào)用
        IProduct productB = new ProductBFactory().getInstance();
        productB.printInfo();
    }

運(yùn)行結(jié)果如下:

java設(shè)計(jì)模式【工廠方法模式】

補(bǔ)充說(shuō)明

后續(xù)會(huì)依次更新 詳解java 23種設(shè)計(jì)模式,歡迎關(guān)注、交流、補(bǔ)充相關(guān)內(nèi)容(如下)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-447839.html

快捷導(dǎo)航
設(shè)計(jì)模式簡(jiǎn)介總結(jié)
單例模式詳解
工廠方法模式
抽象工廠模式

到了這里,關(guān)于java設(shè)計(jì)模式【工廠方法模式】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java 設(shè)計(jì)模式】創(chuàng)建型之工廠方法模式

    【Java 設(shè)計(jì)模式】創(chuàng)建型之工廠方法模式

    在軟件開發(fā)中,工廠方法模式是一種常見的創(chuàng)建型設(shè)計(jì)模式, 它提供了一種將對(duì)象的實(shí)例化延遲到子類的方法 。工廠方法模式通過(guò)定義一個(gè)創(chuàng)建對(duì)象的接口,但是讓子類決定實(shí)例化哪個(gè)類。在本文中,我們將介紹 Java 設(shè)計(jì)模式中的工廠方法模式,了解其定義、使用場(chǎng)景以及

    2024年01月17日
    瀏覽(26)
  • 【拆解設(shè)計(jì)模式】工廠方法及其Java示例

    在我們的編程世界中,設(shè)計(jì)模式就如同一盞指路明燈,引領(lǐng)我們走向優(yōu)雅、高效的代碼之路。設(shè)計(jì)模式是一種在特定環(huán)境下解決特定問(wèn)題的優(yōu)秀方案,它是前人的經(jīng)驗(yàn)總結(jié),是我們編程的寶貴財(cái)富。 1.1 設(shè)計(jì)模式的定義和分類 設(shè)計(jì)模式,簡(jiǎn)單來(lái)說(shuō),就是一套被反復(fù)使用、多數(shù)

    2024年01月20日
    瀏覽(34)
  • [設(shè)計(jì)模式Java實(shí)現(xiàn)附plantuml源碼~創(chuàng)建型] 多態(tài)工廠的實(shí)現(xiàn)——工廠方法模式

    [設(shè)計(jì)模式Java實(shí)現(xiàn)附plantuml源碼~創(chuàng)建型] 多態(tài)工廠的實(shí)現(xiàn)——工廠方法模式

    前言: 為什么之前寫過(guò)Golang 版的設(shè)計(jì)模式,還在重新寫 Java 版? 答:因?yàn)閷?duì)于我而言,當(dāng)然也希望對(duì)正在學(xué)習(xí)的大伙有幫助。Java作為一門純面向?qū)ο蟮恼Z(yǔ)言,更適合用于學(xué)習(xí)設(shè)計(jì)模式。 為什么類圖要附上uml 因?yàn)楹芏嗳藢W(xué)習(xí)有做筆記的習(xí)慣,如果單純的只是放一張圖片,那

    2024年01月21日
    瀏覽(23)
  • 《Java極簡(jiǎn)設(shè)計(jì)模式》第03章:工廠方法模式(FactoryMethod)

    《Java極簡(jiǎn)設(shè)計(jì)模式》第03章:工廠方法模式(FactoryMethod)

    作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章匯總:https://binghe.gitcode.host/md/all/all.html 源碼地址:https://github.com/binghe001/java-simple-design-patterns/tree/master/java-simple-design-factorymethod 沉淀,成長(zhǎng),突破,幫助他人,成就自我。 本章難度:★★☆☆☆ 本章重點(diǎn):

    2024年02月12日
    瀏覽(25)
  • Java 大廠八股文面試專題-設(shè)計(jì)模式 工廠方法模式、策略模式、責(zé)任鏈模式

    Java 大廠八股文面試專題-設(shè)計(jì)模式 工廠方法模式、策略模式、責(zé)任鏈模式

    ????????在平時(shí)的開發(fā)中,涉及到設(shè)計(jì)模式的有兩塊內(nèi)容,第一個(gè)是我們 平時(shí)使用的框架 (比如spring、mybatis等),第二個(gè)是我們自己開發(fā)業(yè)務(wù)使用的設(shè)計(jì)模式。 ????????面試官一般比較關(guān)心的是你在開發(fā)過(guò)程中, 有沒(méi)有使用過(guò)設(shè)計(jì)模式,或者你在簡(jiǎn)歷上寫了關(guān)于設(shè)計(jì)

    2024年02月10日
    瀏覽(29)
  • 設(shè)計(jì)模式(二)、工廠模式--工廠方法模式

    工廠方法模式是一種常用的創(chuàng)建型設(shè)計(jì)模式。它解決了簡(jiǎn)單工廠模式的問(wèn)題:如違反了開閉原則,其次可以用于更復(fù)雜的結(jié)構(gòu) 它的核心結(jié)構(gòu)有四個(gè)角色? 抽象工廠;具體工廠;抽象產(chǎn)品;具體產(chǎn)品 抽象工廠(抽象類或接口)不在負(fù)責(zé)具體的創(chuàng)建過(guò)程,即具體的代碼實(shí)現(xiàn)。只制定

    2024年02月16日
    瀏覽(21)
  • 【設(shè)計(jì)模式】單例模式、工廠方法模式、抽象工廠模式

    1. 單例模式 (Singleton Pattern): 場(chǎng)景: 在一個(gè)應(yīng)用程序中,需要一個(gè)全局唯一的配置管理器,確保配置信息只有一個(gè)實(shí)例。 2. 工廠方法模式 (Factory Method Pattern): 場(chǎng)景: 創(chuàng)建一組具有相似功能但具體實(shí)現(xiàn)不同的日志記錄器。 3. 抽象工廠模式 (Abstract Factory Pattern): 場(chǎng)景: 創(chuàng)建不同

    2024年01月15日
    瀏覽(29)
  • 【設(shè)計(jì)模式專題之工廠方法模式】2.積木工廠

    時(shí)間限制:1.000S??空間限制:256MB 題目描述 小明家有兩個(gè)工廠,一個(gè)用于生產(chǎn)圓形積木,一個(gè)用于生產(chǎn)方形積木,請(qǐng)你幫他設(shè)計(jì)一個(gè)積木工廠系統(tǒng),記錄積木生產(chǎn)的信息。 輸入描述 輸入的第一行是一個(gè)整數(shù) N(1 ≤ N ≤ 100),表示生產(chǎn)的次數(shù)。? 接下來(lái)的 N 行,每行輸入一

    2024年03月14日
    瀏覽(26)
  • 【設(shè)計(jì)模式】-工廠方法模式

    工廠方法模式(Factory Method Pattern)是一種 創(chuàng)建型 設(shè)計(jì)模式,它通過(guò)定義一個(gè)用于創(chuàng)建對(duì)象的接口,但是將 具體對(duì)象的創(chuàng)建 推遲到 子類 中。這樣, 子類可以決定要實(shí)例化的對(duì)象類型 。工廠方法模式提供了一種方式,通過(guò)將對(duì)象的創(chuàng)建延遲到子類中,來(lái)解耦對(duì)象的生產(chǎn)和使

    2024年02月14日
    瀏覽(23)
  • 設(shè)計(jì)模式-工廠方法模式

    ? ? ?工廠方法模式(Factory Method Pattern)是一種常用的類創(chuàng)建型設(shè)計(jì)模式,它屬于對(duì)象的創(chuàng)建型模式,主要用來(lái)封裝對(duì)象的創(chuàng)建過(guò)程。在該模式中,一個(gè)抽象工廠定義了一個(gè)接口用于創(chuàng)建產(chǎn)品對(duì)象,但實(shí)際的實(shí)例化延遲到子類中進(jìn)行,也就是說(shuō),具體的產(chǎn)品是由其對(duì)應(yīng)的工廠

    2024年01月17日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包