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

java設計模式-工廠方法模式

這篇具有很好參考價值的文章主要介紹了java設計模式-工廠方法模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.工廠方法(FactoryMethod)模式的定義

定義一個創(chuàng)建產品對象的工廠接口,將產品對象的實際創(chuàng)建工作推遲到具體子工廠類當中。這滿足創(chuàng)建型模式中所要求的“創(chuàng)建與使用相分離”的特點。

2.工廠方法模式的主要優(yōu)缺點

優(yōu)點:

  • 用戶只需要知道具體工廠的名稱就可得到所要的產品,無須知道產品的具體創(chuàng)建過程;
  • 在系統(tǒng)增加新的產品時只需要添加具體產品類和對應的具體工廠類,無須對原工廠進行任何修改,滿足開閉原則;

缺點:

  • 每增加一個產品就要增加一個具體產品類和一個對應的具體工廠類,這增加了系統(tǒng)的復雜度。

3.工廠方法模式主要角色

  • 抽象工廠(Abstract Factory):提供了創(chuàng)建產品的接口,調用者通過它訪問具體工廠的工廠方法 newProduct() 來創(chuàng)建產品。
  • 具體工廠(ConcreteFactory):主要是實現(xiàn)抽象工廠中的抽象方法,完成具體產品的創(chuàng)建。
  • 抽象產品(Product):定義了產品的規(guī)范,描述了產品的主要特性和功能。
  • 具體產品(ConcreteProduct):實現(xiàn)了抽象產品角色所定義的接口,由具體工廠來創(chuàng)建,它同具體工廠之間一一對應。

4.工廠方法模式結構圖

java設計模式-工廠方法模式,Java設計模式,java,設計模式

5.工廠方法模式的實現(xiàn)

5.1 普通工廠模式,以消息發(fā)送為例

  • 創(chuàng)建消息發(fā)送接口
package com.lw.designpattern.factorymethod.normal;

/**
 * @Classname Sender
 * @Description 消息發(fā)送接口
 * @Author lw
 * @Date 2019-12-21 15:24
 */
public interface Sender {

    public void send();
}
  • 創(chuàng)建郵件發(fā)送類,實現(xiàn)Sender接口
package com.lw.designpattern.factorymethod.normal;

/**
 * @Classname MailSender
 * @Description 郵件發(fā)送
 * @Author lw
 * @Date 2019-12-21 15:25
 */
public class MailSender implements Sender {

    @Override
    public void send() {
        System.out.println("郵件發(fā)送。。。。。。");
    }
}
  • 創(chuàng)建短信發(fā)送類,實現(xiàn)Sender接口
package com.lw.designpattern.factorymethod.normal;

/**
 * @Classname SmsSender
 * @Description 短信發(fā)送
 * @Author lw
 * @Date 2019-12-21 15:26
 */
public class SmsSender implements Sender {

    @Override
    public void send() {
        System.out.println("短信發(fā)送。。。。。。");
    }
}

如果后續(xù)有其他方式消息發(fā)送,則只需要創(chuàng)建消息發(fā)送類,實現(xiàn)Sender接口即可。違背開閉原則

  • 測試代碼
 /**
   * 工廠設計模式-普通工廠模式
   */
  @Test
  public void testNormalFactory(){
      // 郵件發(fā)送
      Sender sender = new MailSender();
      sender.send();
      // 短信發(fā)送
      Sender sender1 = new SmsSender();
      sender1.send();
  }
  • 打印結果
    java設計模式-工廠方法模式,Java設計模式,java,設計模式

5.2 工廠方法模式,以飲料產品及生產為例

  • 創(chuàng)建飲料產品接口
package com.lw.designpattern.factorymethod.multi;

/**
 * @Classname DrinksProduct
 * @Description 飲料產品接口
 * @Author lw
 * @Date 2019-12-21 14:22
 */
public interface DrinksProduct {

    public void show();
}
  • 創(chuàng)建可樂產品類,實現(xiàn)DrinksProduct接口
package com.lw.designpattern.factorymethod.multi;

/**
 * @Classname ColaProduct
 * @Description 可樂產品
 * @Author lw
 * @Date 2019-12-21 14:30
 */
public class ColaProduct implements DrinksProduct {

    @Override
    public void show() {
        System.out.println("可樂產品顯示。。。。。。");
    }
}
  • 創(chuàng)建雪碧產品類,實現(xiàn)DrinksProduct接口
package com.lw.designpattern.factorymethod.multi;

/**
 * @Classname SpriteProduct
 * @Description 雪碧產品
 * @Author lw
 * @Date 2019-12-21 14:31
 */
public class SpriteProduct implements DrinksProduct {

    @Override
    public void show() {
        System.out.println("雪碧產品顯示。。。。。。");
    }
}
  • 創(chuàng)建飲料工廠接口
package com.lw.designpattern.factorymethod.multi;

/**
 * @Classname DrinksFactory
 * @Description 飲料工廠接口
 * @Author lw
 * @Date 2019-12-21 15:04
 */
public interface DrinksFactory {

    public DrinksProduct product();
}
  • 創(chuàng)建可樂工廠類,實現(xiàn)DrinksFactory接口
package com.lw.designpattern.factorymethod.multi;

/**
 * @Classname ColaFactory
 * @Description 可樂工廠
 * @Author lw
 * @Date 2019-12-21 15:05
 */
public class ColaFactory implements DrinksFactory {

    @Override
    public DrinksProduct product() {
        System.out.println("開始生產可樂。。。。。。");
        return new ColaProduct();
    }
}
  • 創(chuàng)建雪碧工廠類,實現(xiàn)DrinksFactory接口
package com.lw.designpattern.factorymethod.multi;

/**
 * @Classname SpriteFactory
 * @Description 雪碧工廠
 * @Author lw
 * @Date 2019-12-21 15:05
 */
public class SpriteFactory implements DrinksFactory {

    @Override
    public DrinksProduct product() {
        System.out.println("開始生產雪碧。。。。。。");
        return new SpriteProduct();
    }
}

后續(xù)增加其他產品,則需要增加一個具體產品類和一個對應的具體工廠類即可。滿足開閉原則。

  • 測試代碼
/**
  * 工廠設計模式-工廠方法模式
  */
 @Test
 public void testFactoryMethod(){
     // 生產可樂
     DrinksFactory drinksFactory = new ColaFactory();
     DrinksProduct drinksProduct = drinksFactory.product();
     drinksProduct.show();
     // 生產雪碧
     DrinksFactory drinksFactory1 = new SpriteFactory();
     DrinksProduct drinksProduct1 = drinksFactory1.product();
     drinksProduct1.show();
 }

打印結果
java設計模式-工廠方法模式,Java設計模式,java,設計模式文章來源地址http://www.zghlxwxcb.cn/news/detail-757414.html

6.工廠方法模式的應用場景

  • 客戶只知道創(chuàng)建產品的工廠名,而不知道具體的產品名。
  • 創(chuàng)建對象的任務由多個具體子工廠中的某一個完成,而抽象工廠只提供創(chuàng)建產品的接口。
  • 客戶不關心創(chuàng)建產品的細節(jié),只關心產品的品牌。

到了這里,關于java設計模式-工廠方法模式的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

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

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

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

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

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

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

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

    前言: 為什么之前寫過Golang 版的設計模式,還在重新寫 Java 版? 答:因為對于我而言,當然也希望對正在學習的大伙有幫助。Java作為一門純面向對象的語言,更適合用于學習設計模式。 為什么類圖要附上uml 因為很多人學習有做筆記的習慣,如果單純的只是放一張圖片,那

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

    《Java極簡設計模式》第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 沉淀,成長,突破,幫助他人,成就自我。 本章難度:★★☆☆☆ 本章重點:

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

    Java 大廠八股文面試專題-設計模式 工廠方法模式、策略模式、責任鏈模式

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

    2024年02月10日
    瀏覽(29)
  • 設計模式-簡單工廠模式(靜態(tài)工廠模式)java實現(xiàn)

    設計模式-簡單工廠模式(靜態(tài)工廠模式)java實現(xiàn)

    簡單工廠模式根據(jù)所 提供的參數(shù) 數(shù)據(jù)返回幾個可能類中的一個類的實例。通常返回的類都有一個公共的父類和公共的方法。 ? 意圖 提供一個類,負責根據(jù)一定的條件創(chuàng)建某一具體類的實例。同時使用工廠模式也是為了隱藏創(chuàng)建對象的過程 角色及其職責 (1)工廠(Creator)角色

    2024年02月13日
    瀏覽(29)
  • Java設計模式——工廠模式

    Java設計模式——工廠模式

    目錄 設計模式系列文章 前言 一、簡單工廠模式 二、工廠方法模式 三、抽象工廠模式 總結 最近在學習一些Java設計模式的概念,設計模式誕生的目的,我認為是可以使得寫出的代碼具有更好的邏輯性,減少了大量冗余代碼來進行重復而繁瑣的操作,也更好的提升了復用性。

    2023年04月13日
    瀏覽(24)
  • JAVA設計模式—工廠模式

    工廠模式是一種創(chuàng)建型設計模式,它提供了一種創(chuàng)建對象的接口,但是由子類決定要實例化的類是哪一個。工廠模式使得一個類的實例化延遲到其子類。 用代碼進行舉例演示 假設我們有一個產品接口 Product 和兩個具體產品類 ConcreteProductA 和 ConcreteProductB ,以及一個工廠接口

    2024年01月24日
    瀏覽(30)
  • java設計模式【抽象工廠模式】

    java設計模式【抽象工廠模式】

    抽象工廠模式 是對簡單工廠模式的一個變種,它允許通過一個統(tǒng)一的接口來創(chuàng)建不同的產品實例,而無需指定具體的子類。在這個模式中,我們只關心產品的抽象接口,而將具體的產品實現(xiàn)留給子類去實現(xiàn)。這樣,我們可以通過創(chuàng)建不同的工廠對象來創(chuàng)建不同的產品實例,而

    2024年02月05日
    瀏覽(31)
  • Java設計模式-抽象工廠模式

    設計模式是軟件設計中的一種常見方法,通過定義一系列通用的解決方案,來解決常見的軟件設計問題。其中,抽象工廠模式是一種非常常見的設計模式,它可以幫助我們創(chuàng)建一組相關的對象,而不需要指定具體的實現(xiàn)方式。 抽象工廠模式是一種創(chuàng)建型設計模式,它提供了一

    2024年02月01日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包