亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java創(chuàng)建型設計模式之抽象工廠模式(Abstract?Factory)

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

抽象工廠模式

概述

抽象工廠模式(Abastract Factory Pattern)屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。

它提供一個創(chuàng)建一系列相關或相互依賴對象的接口,無須顯式指定他們具體的類。每個生成的工廠都能按照工廠模式提供對象。

抽象工廠模式是圍繞一個超級工廠創(chuàng)建其他工廠,該超級工廠又稱為其他工廠的工廠。

產(chǎn)品等級結(jié)構(gòu)與產(chǎn)品族

抽象工廠模式是工廠方法模式的加強版。工廠方法模式針對一個產(chǎn)品等級結(jié)構(gòu),而抽象工廠模式面對多個產(chǎn)品等級結(jié)構(gòu),一個工廠角色可以負責多個不同產(chǎn)品等級結(jié)構(gòu)中的產(chǎn)品對象的創(chuàng)建 。

產(chǎn)品等級結(jié)構(gòu)

產(chǎn)品等級結(jié)構(gòu)即產(chǎn)品的繼承結(jié)構(gòu),如一個車輛抽象類,其子類有BM汽車、AD汽車等,則抽象車輛與具體品牌的車輛之間形成了一個產(chǎn)品等級結(jié)構(gòu),抽象車輛類是父類,而具體品牌的工廠類是子類。

產(chǎn)品族

產(chǎn)品族是指由同一個工廠生產(chǎn)的,位于不同產(chǎn)品等級結(jié)構(gòu)中的一組產(chǎn)品,如BM工廠生成的BM車輪、BM車架等組成一個產(chǎn)品族。這幾個產(chǎn)品屬于不同的產(chǎn)品等級結(jié)構(gòu),但由同一個工廠創(chuàng)建。

一系列相關產(chǎn)品, 如椅子 、 沙發(fā)和咖啡桌

系列產(chǎn)品的不同變體。 如現(xiàn)代、 ? 維多利亞 、 ? 裝飾風藝術(shù)等風格生成椅子、沙發(fā)和咖啡桌

優(yōu)缺點

優(yōu)點:

當一個產(chǎn)品族中的多個對象被設計成一起工作時,它能保證客戶端始終只使用同一個產(chǎn)品族中的對象。

缺點:

產(chǎn)品族擴展非常困難,要增加一個系列的某一產(chǎn)品,既要在抽象的 Creator 里加代碼,又要在具體的里面加代碼

主要角色

1.抽象產(chǎn)品角色(AbstractProduct)

它是工廠方法模式所創(chuàng)建的對象的父類,或它們共同擁有的接口。

2.具體產(chǎn)品角色(ConcreteProduct)

抽象工廠模式所創(chuàng)建的任何產(chǎn)品對象都是某一個具體產(chǎn)品類的實例。

3.抽象工廠角色(AbstractFactory)

它是工廠方法模式的核心,它與應用程序無關。

4.具體工廠角色(ConcreteFactory)

它直接在客戶端的調(diào)用下創(chuàng)建產(chǎn)品的實例。

抽象工廠模式的基本使用

創(chuàng)建抽象產(chǎn)品

創(chuàng)建抽象產(chǎn)品角色,工廠類所創(chuàng)建的產(chǎn)品的父類,封裝了產(chǎn)品對象的公共方法

public interface IWheel {
    void create(String name);
}
public interface IFrame {
    void create(String name);
}

創(chuàng)建具體產(chǎn)品

創(chuàng)建一系列相關的產(chǎn)品對象,如創(chuàng)建BMCar產(chǎn)品族,擴展一系列相關產(chǎn)品對象。

public class CarWheel implements IWheel{
    @Override
    public void create(String name) {
        System.out.println("制造"+name+"車輪");
    }
}
public class CarFrame implements IFrame {
    @Override
    public void create(String name) {
        System.out.println("制造"+name+"車架");
    }
}

創(chuàng)建抽象工廠

創(chuàng)建抽象工廠,提供一個創(chuàng)建一系列相關或相互依賴對象的接口

public abstract class CarFactory {
    /**
     * 制造車輪產(chǎn)品
     */
   protected abstract  IWheel createWheel();

    /**
     * 制造車架產(chǎn)品
     */
   protected abstract  IFrame createFrame();
}

創(chuàng)建具體工廠

創(chuàng)建具體產(chǎn)品工廠,提供一個產(chǎn)品類的庫

public class BMCarFactory extends CarFactory {
    @Override
    protected IWheel createWheel() {
        return new CarWheel();
    }
    @Override
    protected IFrame createFrame() {
        return new CarFrame();
    }
}
public class ADCarFactory extends CarFactory {
    @Override
    protected IWheel createWheel() {
        return new CarWheel();
    }
    @Override
    protected IFrame createFrame() {
        return new CarFrame();
    }
}

客戶端執(zhí)行

    public static void main(String[] args) {
        BMCarFactory bmCarFactory = new BMCarFactory();
        bmCarFactory.createFrame().create("BM");
        bmCarFactory.createWheel().create("BM");
        ADCarFactory adCarFactory = new ADCarFactory();
        adCarFactory.createFrame().create("AD");
        adCarFactory.createWheel().create("AD");
    }

制造BM車架
制造BM車輪
制造AD車架
制造AD車輪

到此這篇關于Java創(chuàng)建型設計模式之抽象工廠模式(Abstract Factory)的文章就介紹到這了,更多相關Java抽象工廠模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java抽象類的概念講解

    Java抽象類的概念講解

    今天小編就為大家分享一篇關于Java抽象類的概念講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Java從零編寫汽車租賃系統(tǒng)全程分析

    Java從零編寫汽車租賃系統(tǒng)全程分析

    這篇文章介紹了Java實現(xiàn)汽車租賃系統(tǒng)的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • 優(yōu)化Java虛擬機總結(jié)(jvm調(diào)優(yōu))

    優(yōu)化Java虛擬機總結(jié)(jvm調(diào)優(yōu))

    這篇文章主要介紹了優(yōu)化Java虛擬機總結(jié)(jvm調(diào)優(yōu)),具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Java ArrayList 數(shù)組之間相互轉(zhuǎn)換

    Java ArrayList 數(shù)組之間相互轉(zhuǎn)換

    本文通過代碼示例給大家講解arraylist轉(zhuǎn)化為數(shù)組,然后數(shù)組轉(zhuǎn)化為arraylist的相關資料,感興趣的朋友一起看看吧
    2015-11-11
  • Java元注解Retention代碼示例介紹

    Java元注解Retention代碼示例介紹

    注解@Retention可以用來修飾注解,是注解的注解,稱為元注解。Retention注解有一個屬性value,是RetentionPolicy類型的,Enum?RetentionPolicy是一個枚舉類型,這個枚舉決定了Retention注解應該如何去保持,也可理解為Rentention?搭配?RententionPolicy使用
    2022-08-08
  • ?java中StopWatch的使用詳解

    ?java中StopWatch的使用詳解

    本文主要介紹了?java中StopWatch的使用詳解,stopWatch使用它可直觀的輸出代碼執(zhí)行耗時,以及執(zhí)行時間百分比,非常具有實用價值,需要的朋友可以參考下
    2023-05-05
  • 基于java查找最長字符串代碼實例

    基于java查找最長字符串代碼實例

    這篇文章主要介紹了基于java查找最長字符串代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • 簡單易懂講解happens-before原則

    簡單易懂講解happens-before原則

    Java內(nèi)存模型中的happens-before是什么?為什么會有這東西的存在?一個新東西肯定是上手先,但是等我們空下來回過頭來,我們還是需要去理解這些知識,只有這樣我才能深刻的記住,并且運用熟練。下來和小編來一起學習下
    2019-05-05
  • @JsonProperty和@JSONField注解的區(qū)別解析(最新)

    @JsonProperty和@JSONField注解的區(qū)別解析(最新)

    Jackson是一款優(yōu)秀的JSON解析庫,添加了依賴之后就可以使用對應的注解,讓我們能夠自由的將Java對象和JSON做轉(zhuǎn)換,這篇文章主要介紹了@JsonProperty和@JSONField注解的區(qū)別,需要的朋友可以參考下
    2024-04-04
  • Java實現(xiàn)FTP文件上傳

    Java實現(xiàn)FTP文件上傳

    FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,而中文簡稱為“文傳協(xié)議”。用于Internet上的控制文件的雙向傳輸。本文將講解如何用Java實現(xiàn)FTP文件上傳
    2021-05-05

最新評論