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

Java?設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解簡(jiǎn)單工廠模式

 更新時(shí)間:2022年03月30日 14:52:47   作者:桃花鍵神  
簡(jiǎn)單工廠模式是屬于創(chuàng)建型模式,又叫做靜態(tài)工廠方法(Static Factory Method)模式,但不屬于23種GOF設(shè)計(jì)模式之一。簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。簡(jiǎn)單工廠模式是工廠模式家族中最簡(jiǎn)單實(shí)用的模式,可以理解為是不同工廠模式的一個(gè)特殊實(shí)現(xiàn)

專欄介紹

本系列專欄會(huì)以虹貓藍(lán)兔七俠傳的故事為例來(lái)給大家詳細(xì)分析所有模式,希望能給大家?guī)?lái)幫助!

本期介紹

模式: 簡(jiǎn)單工廠模式
案例: 一個(gè)天外隕石(抽象產(chǎn)品),三把劍(產(chǎn)品),
一個(gè)鑄劍師(工廠)。
虹貓藍(lán)兔莎莉分別找鑄劍師造了三把劍。

什么是簡(jiǎn)單工廠模式

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

1、按實(shí)際業(yè)務(wù)場(chǎng)景劃分,工廠模式有 3 種不同的實(shí)現(xiàn)方式,分別是簡(jiǎn)單工廠模式、工廠方法模式和抽象工廠模式。
2、我們把被創(chuàng)建的對(duì)象稱為“產(chǎn)品”,把創(chuàng)建產(chǎn)品的對(duì)象稱為“工廠”。如果要?jiǎng)?chuàng)建的產(chǎn)品不多,只要一個(gè)工廠類就可以完成,這種模式叫“簡(jiǎn)單工廠模式”。

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

1、工廠類包含必要的邏輯判斷,可以決定在什么時(shí)候創(chuàng)建哪一個(gè)產(chǎn)品的實(shí)例??蛻舳丝梢悦獬苯觿?chuàng)建產(chǎn)品對(duì)象的職責(zé),很方便的創(chuàng)建出相應(yīng)的產(chǎn)品。工廠和產(chǎn)品的職責(zé)區(qū)分明確。
2、客戶端無(wú)需知道所創(chuàng)建具體產(chǎn)品的類名,只需知道參數(shù)即可。
3、也可以引入配置文件,在不修改客戶端代碼的情況下更換和添加新的具體產(chǎn)品類。

缺點(diǎn)

1、簡(jiǎn)單工廠模式的工廠類單一,負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,職責(zé)過(guò)重,一旦異常,整個(gè)系統(tǒng)將受影響。且工廠類代碼會(huì)非常臃腫,違背高聚合原則。
2、使用簡(jiǎn)單工廠模式會(huì)增加系統(tǒng)中類的個(gè)數(shù)(引入新的工廠類),增加系統(tǒng)的復(fù)雜度和理解難度
3、系統(tǒng)擴(kuò)展困難,一旦增加新產(chǎn)品不得不修改工廠邏輯,在產(chǎn)品類型較多時(shí),可能造成邏輯過(guò)于復(fù)雜
4、簡(jiǎn)單工廠模式使用了 static 工廠方法,造成工廠角色無(wú)法形成基于繼承的等級(jí)結(jié)構(gòu)。

應(yīng)用場(chǎng)景

對(duì)于產(chǎn)品種類相對(duì)較少的情況,考慮使用簡(jiǎn)單工廠模式。使用簡(jiǎn)單工廠模式的客戶端只需要傳入工廠類的參數(shù),不需要關(guān)心如何創(chuàng)建對(duì)象的邏輯,可以很方便地創(chuàng)建所需產(chǎn)品。

簡(jiǎn)單工廠的實(shí)現(xiàn)

案例的主要角色如下:
工廠(SimpleFactory):鑄劍師
抽象產(chǎn)品(Product):天外隕石(鑄劍的原材料)
具體產(chǎn)品(ConcreteProduct):長(zhǎng)虹劍、冰魄劍、紫云劍

案例: 虹貓藍(lán)兔莎莉分別找鑄劍師打造三把劍,長(zhǎng)虹劍、冰魄劍、紫云劍。鑄劍師利用原材料天外隕石來(lái)鑄造這三把劍。

Ss接口(天外隕石):

接口內(nèi)聲明了一個(gè)方法

public interface Ss {
    void show();
}

Aa類實(shí)現(xiàn)接口Ss(長(zhǎng)虹劍):

實(shí)現(xiàn)Ss接口

public class Aa implements Ss {
    @Override
    public void show() {
        System.out.println("打造了一把長(zhǎng)虹劍");

    }
}

Bb類實(shí)現(xiàn)接口Ss(冰魄劍):

實(shí)現(xiàn)Ss接口

public class Bb implements Ss {
    @Override
    public void show() {
        System.out.println("打造了一把冰魄劍");

    }
}

Cc類實(shí)現(xiàn)接口Ss(紫云劍):

實(shí)現(xiàn)Ss接口

public class Cc implements Ss {
    @Override
    public void show() {
        System.out.println("打造了一把紫云劍");
    }
}

Zz類(鑄劍師):

聲明一個(gè)Ss類型屬性,聲明一個(gè)abc方法,用來(lái)判斷需要造哪把劍,返回一把劍對(duì)象。

public class Zz {
    private static Ss ss;

    public Ss abc(String a) {
        if ("長(zhǎng)虹劍".equals(a)) {
            ss = new Aa();
        } else if ("冰魄劍".equals(a)) {
            ss = new Bb();
        } else if ("紫云劍".equals(a)) {
            ss = new Cc();
        } else {
            System.out.println("鑄劍失敗");
        }
        return ss;
    }
}

Demo測(cè)試類:

new一個(gè)鑄劍師(工廠對(duì)象),調(diào)用鑄劍師的方法傳入需要造的劍,返回一個(gè)劍的對(duì)象,然后調(diào)用劍對(duì)象中的方法看看造的對(duì)不對(duì)。

public class Demo {
    public static void main(String[] args) {
        Zz zz = new Zz();
        Ss aa = zz.abc("長(zhǎng)虹劍");
        aa.show();
        Ss bb = zz.abc("冰魄劍");
        bb.show();
        Ss cc = zz.abc("紫云劍");
        cc.show();
        Ss dd = zz.abc("aa");
    }
}

在這里插入圖片描述

下期預(yù)告

模式: 普通工廠模式
案例: 七俠找鑄劍師夫婦造劍

敬請(qǐng)期待

到此這篇關(guān)于Java?設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解簡(jiǎn)單工廠模式的文章就介紹到這了,更多相關(guān)Java 簡(jiǎn)單工廠模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java代碼實(shí)現(xiàn)截圖功能(屏幕截圖)

    java代碼實(shí)現(xiàn)截圖功能(屏幕截圖)

    java代碼實(shí)現(xiàn)截圖功能,該JavaBean可以直接在其他Java應(yīng)用程序中調(diào)用,默認(rèn)的文件前綴為GuiCamera,文件格式為PNG格式,直接使用下面的類吧
    2013-12-12
  • java開(kāi)發(fā)技巧代碼寫(xiě)的快且bug少的原因分析

    java開(kāi)發(fā)技巧代碼寫(xiě)的快且bug少的原因分析

    這篇文章主要為大家介紹了java開(kāi)發(fā)中代碼寫(xiě)的快且bug少的原因分析及技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 新版Android?Studio修改jdk版本的簡(jiǎn)單步驟

    新版Android?Studio修改jdk版本的簡(jiǎn)單步驟

    這篇文章主要介紹了新版Android?Studio修改jdk版本的簡(jiǎn)單步驟,升級(jí)Android?Studio后,JDK版本設(shè)置選項(xiàng)消失,可以通過(guò)Settings面板進(jìn)入Gradle設(shè)置,修改GradleJDK路徑來(lái)解決問(wèn)題,需要的朋友可以參考下
    2025-03-03
  • Mybatis-Plus中分頁(yè)插件PaginationInterceptor的使用

    Mybatis-Plus中分頁(yè)插件PaginationInterceptor的使用

    我們?cè)陂_(kāi)發(fā)的過(guò)程中,經(jīng)常會(huì)遇到分頁(yè)操作,本文主要介紹了Mybatis-Plus中分頁(yè)插件PaginationInterceptor的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringBoot整合Minio的示例代碼

    SpringBoot整合Minio的示例代碼

    這篇文章主要介紹了SpringBoot整合Minio的示例代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 詳解spring與shiro集成

    詳解spring與shiro集成

    這篇文章主要介紹了詳解spring與shiro集成,需要的朋友可以參考下
    2017-09-09
  • Java阻塞隊(duì)列四組API介紹(小結(jié))

    Java阻塞隊(duì)列四組API介紹(小結(jié))

    這篇文章主要介紹了Java阻塞隊(duì)列四組API介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • java 保留兩位小數(shù)的幾種方法

    java 保留兩位小數(shù)的幾種方法

    這篇文章主要介紹了JAVA中小數(shù)點(diǎn)后保留兩位的幾種方法,并有小實(shí)例,希望能幫助有所需要的同學(xué)
    2016-07-07
  • springcloud 熔斷器Hystrix的具體使用

    springcloud 熔斷器Hystrix的具體使用

    本篇文章主要介紹了springcloud 熔斷器Hystrix的具體使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Java Comparable及Comparator接口區(qū)別詳解

    Java Comparable及Comparator接口區(qū)別詳解

    這篇文章主要介紹了Java Comparable及Comparator接口區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論

长春市| 津南区| 五寨县| 彰武县| 阿合奇县| 安达市| 钦州市| 汶川县| 平泉县| 无棣县| 东海县| 左贡县| 泾阳县| 湘乡市| 阿克苏市| 肥东县| 青铜峡市| 含山县| 崇左市| 自贡市| 莱阳市| 安宁市| 徐州市| 本溪| 兴隆县| 明溪县| 云林县| 新龙县| 独山县| 祁阳县| 临泉县| 南昌市| 禹城市| 永胜县| 新河县| 娱乐| 奈曼旗| 临洮县| 怀安县| 宁蒗| 射洪县|