最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 深入探究講解抽象工廠模式

 更新時間:2022年04月06日 17:59:23   作者:靜靜子?  
當(dāng)系統(tǒng)所提供的工廠所需生產(chǎn)的具體產(chǎn)品并不是一個簡單的對象,而是多個位于不同產(chǎn)品等級結(jié)構(gòu)中屬于不同類型的具體產(chǎn)品時需要使用抽象工廠模式,抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形態(tài)

解決工廠方法模式的問題:一個具體工廠只能創(chuàng)建一類產(chǎn)品,而實際過程中一個工廠往往需要生成很多的產(chǎn)品,這種可以采用抽象工廠模式。

1. 抽象工廠模式解決

定義:提供一個創(chuàng)建一系列相關(guān)或者互相依賴對象的接口,無需指定他們的具體的類,具體的工廠負(fù)責(zé)實現(xiàn)具體的產(chǎn)品的實例。使一個工廠可以產(chǎn)生多個產(chǎn)品。

2. 抽象工廠類圖UML

img

3. 抽象工廠模式的主要角色

抽象工廠(AbstractFactory):提供了創(chuàng)建產(chǎn)品的接口,包含了多個創(chuàng)建產(chǎn)品的接口方法,可以創(chuàng)建多個不同等級的產(chǎn)品

具體工廠(ConcreteFactory):實現(xiàn)了抽象工廠定義的方法,完成具體產(chǎn)品的創(chuàng)建

抽象產(chǎn)品(Product):定義了產(chǎn)品的規(guī)范,描述產(chǎn)品的主要特征和性能

具體產(chǎn)品(ConcreteProduct):實現(xiàn)了抽象產(chǎn)品的定義的方法,有具體工廠來創(chuàng)建產(chǎn)品,具體工廠和具體產(chǎn)品一對多關(guān)系

4. 代碼實現(xiàn)

抽象工廠方法實現(xiàn):

public interface AbstractFactory {
    public Product1 createProduct1();
    public Product2 createProduct2();
}
?
public class ConcreteFactory1 implements AbstractFactory {
    @Override
    public Product1 createProduct1() {
        System.out.println("具體工廠1產(chǎn)生具體產(chǎn)品1...");
        return new ConcreteProduct1();
    }
?
    @Override
    public Product2 createProduct2() {
        System.out.println("具體工廠1產(chǎn)生具體產(chǎn)品2...");
        return new ConcreteProduct2();
    }
}

使用步驟:

  • 創(chuàng)建抽象產(chǎn)品類,定義產(chǎn)品的公共方法
  • 創(chuàng)建具體產(chǎn)品類(實現(xiàn)抽象產(chǎn)品接口),定義生成的具體產(chǎn)品
  • 創(chuàng)建抽象工廠類,定義具體工廠的公共接口,一個工廠類可以創(chuàng)建不同等級的產(chǎn)品
  • 創(chuàng)建具體工廠類,定義創(chuàng)建對應(yīng)具體產(chǎn)品實例的方法
  • 調(diào)用方調(diào)用具體的工廠類的方法,從而創(chuàng)建不同具體產(chǎn)品的實例

5. 抽象工廠方法再探究

解決問題:每個工廠只能創(chuàng)建一類產(chǎn)品,即是工廠方法的缺點

6. 優(yōu)缺點

優(yōu)點:

  • 可以在工廠類內(nèi)部對產(chǎn)品中相關(guān)聯(lián)的多級產(chǎn)品共同管理,而不必專門引入新的類來管理
  • 抽象工廠增加了程序的可擴展性,當(dāng)新增一個新的產(chǎn)品族時,不需要修改源代碼,滿足開閉原則

缺點:

  • 當(dāng)產(chǎn)品族新增一個產(chǎn)品類型時,所有的工廠類都需要進行修改,增加了系統(tǒng)的抽象性和理解難度

7. 適用示例

王者榮耀中提供了很多的英雄,英雄分為射手、輔助、打野、坦克等職業(yè),不同的職業(yè)對應(yīng)的技能,屬性不同。聲明坦克、法師、刺客等多個工廠子類,每個工廠可以生產(chǎn)相應(yīng)技能的應(yīng)用。

到此這篇關(guān)于Java 例舉講解抽象工廠模式的文章就介紹到這了,更多相關(guān)Java 抽象工廠內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Swing常用組件之文本框和文本區(qū)

    Swing常用組件之文本框和文本區(qū)

    這篇文章主要為大家詳細(xì)介紹了Swing常用組件之文本框(JTestField)和文本區(qū)(JTextArea),Swing是一個用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包,本文開始帶大家學(xué)習(xí)Swing
    2016-05-05
  • 快速解決SpringMVC @RequestBody 用map接收請求參數(shù)的問題

    快速解決SpringMVC @RequestBody 用map接收請求參數(shù)的問題

    今天小編就為大家分享快速解決SpringMVC @RequestBody 用map接收請求參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • IDEA集成git和使用步驟的實現(xiàn)方法

    IDEA集成git和使用步驟的實現(xiàn)方法

    這篇文章主要介紹了IDEA集成git和使用步驟的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 使用Java把文本內(nèi)容轉(zhuǎn)換成網(wǎng)頁的實現(xiàn)方法分享

    使用Java把文本內(nèi)容轉(zhuǎn)換成網(wǎng)頁的實現(xiàn)方法分享

    這篇文章主要介紹了使用Java把文本內(nèi)容轉(zhuǎn)換成網(wǎng)頁的實現(xiàn)方法分享,利用到了Java中的文件io包,需要的朋友可以參考下
    2015-11-11
  • SpringBoot實現(xiàn)定時任務(wù)的三種方式小結(jié)

    SpringBoot實現(xiàn)定時任務(wù)的三種方式小結(jié)

    這篇文章主要介紹了SpringBoot實現(xiàn)定時任務(wù)的三種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 數(shù)組在java中的擴容的實例方法

    數(shù)組在java中的擴容的實例方法

    在本篇文章里小編給大家分享的是一篇關(guān)于數(shù)組在java中的擴容的實例方法內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • spring boot--從controller到DAO操作

    spring boot--從controller到DAO操作

    這篇文章主要介紹了spring boot--從controller到DAO操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Maven scala和java混合打包方式

    Maven scala和java混合打包方式

    這篇文章主要介紹了Maven scala和java混合打包方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • springboot整合mybatis的超詳細(xì)過程(配置模式+注解模式)

    springboot整合mybatis的超詳細(xì)過程(配置模式+注解模式)

    這篇文章主要介紹了springboot整合mybatis的詳細(xì)過程(配置模式+注解模式),這里我使用的是配置模式+注解模式所以需要配置全局文件,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Java接口和抽象類用法實例總結(jié)

    Java接口和抽象類用法實例總結(jié)

    這篇文章主要介紹了Java接口和抽象類用法,結(jié)合實例形式總結(jié)分析了Java接口與抽象類的具體定義、使用技巧與相關(guān)注意事項,需要的朋友可以參考下
    2015-12-12

最新評論

永兴县| 大冶市| 侯马市| 巩义市| 东至县| 莎车县| 共和县| 谷城县| 普兰店市| 太谷县| 蒲城县| 襄城县| 新沂市| 华亭县| 恩施市| 嘉黎县| 白沙| 洞口县| 台南市| 乌拉特后旗| 兴文县| 阿合奇县| 江都市| 章丘市| 铜陵市| 舞钢市| 石家庄市| 上栗县| 大悟县| 伊金霍洛旗| 卢湾区| 嫩江县| 秦皇岛市| 沙洋县| 富裕县| 临城县| 边坝县| 墨玉县| 珠海市| 安图县| 甘泉县|