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

Java中常用的設(shè)計(jì)模式之工廠模式詳解

 更新時(shí)間:2022年02月27日 14:58:23   作者:Asurplus、  
這篇文章主要為大家詳細(xì)介紹了Java中常用的設(shè)計(jì)模式之工廠模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

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

1.一個(gè)調(diào)用者想創(chuàng)建一個(gè)對(duì)象,只要知道其名稱(chēng)就可以了。

2.擴(kuò)展性高,如果想增加一個(gè)產(chǎn)品,只要擴(kuò)展一個(gè)工廠類(lèi)就可以。

3.屏蔽產(chǎn)品的具體實(shí)現(xiàn),調(diào)用者只關(guān)心產(chǎn)品的接口。

缺點(diǎn)

1.每次增加一個(gè)產(chǎn)品時(shí),都需要增加一個(gè)具體類(lèi)和對(duì)象實(shí)現(xiàn)工廠,使得系統(tǒng)中類(lèi)的個(gè)數(shù)成倍增加,在一定程度上增加了系統(tǒng)的復(fù)雜度,同時(shí)也增加了系統(tǒng)具體類(lèi)的依賴。這并不是什么好事。

使用場(chǎng)景

1.日志記錄器:記錄可能記錄到本地硬盤(pán)、系統(tǒng)事件、遠(yuǎn)程服務(wù)器等,用戶可以選擇記錄日志到什么地方。

2.數(shù)據(jù)庫(kù)訪問(wèn),當(dāng)用戶不知道最后系統(tǒng)采用哪一類(lèi)數(shù)據(jù)庫(kù),以及數(shù)據(jù)庫(kù)可能有變化時(shí)。

3.設(shè)計(jì)一個(gè)連接服務(wù)器的框架,需要三個(gè)協(xié)議,“POP3”、“IMAP”、“HTTP”,可以把這三個(gè)作為產(chǎn)品類(lèi),共同實(shí)現(xiàn)一個(gè)接口。

一、實(shí)現(xiàn)方式

例如:我們需要在電商平臺(tái)購(gòu)買(mǎi)一臺(tái)手機(jī),我們并不需要去關(guān)心手機(jī)生產(chǎn)廠商是如何把手機(jī)生產(chǎn)出來(lái)的,我們只需要在搜索框輸入:華為手機(jī),小米手機(jī),就能購(gòu)買(mǎi)到我們想要的手機(jī)了。下面看看具體實(shí)現(xiàn)吧。

1、定義一個(gè)接口

package com.asurplus.common.factory;
public interface Phone {
    /**
     * 獲取手機(jī)
     *
     * @return
     */
    String getPhone();
}

2、定義兩個(gè)接口實(shí)現(xiàn)類(lèi)

package com.asurplus.common.factory;
/**
 * 華為手機(jī)實(shí)現(xiàn)類(lèi)
 */
public class HuaweiPhone implements Phone {
    @Override
    public String getPhone() {
        return "華為手機(jī)";
    }
}
package com.asurplus.common.factory;
/**
 * 小米手機(jī)實(shí)現(xiàn)類(lèi)
 */
public class XiaomiPhone implements Phone {
    @Override
    public String getPhone() {
        return "小米手機(jī)";
    }
}

3、定義一個(gè)工廠類(lèi)

package com.asurplus.common.factory;
/**
 * 手機(jī)工廠類(lèi)
 */
public class PhoneFactory {
    /**
     * 獲取手機(jī)
     *
     * @param name
     * @return
     */
    public static Phone getPhone(String name) {
        if ("華為".equals(name)) {
            return new HuaweiPhone();
        }
        if ("小米".equals(name)) {
            return new XiaomiPhone();
        }
        return null;
    }
}

二、測(cè)試

package com.asurplus.common.factory;
/**
 * 工廠模式
 */
public class TestMain {
    public static void main(String[] args) {
        // 獲取手機(jī)
        Phone huaweiPhone = PhoneFactory.getPhone("華為");
        System.out.println(huaweiPhone.getPhone());
    }
}

輸出結(jié)果

在這里插入圖片描述

我們輸入的:華為,得到了華為手機(jī),從而實(shí)現(xiàn)了我們的工廠模式。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

最新評(píng)論

晋城| 长阳| 三江| 宿松县| 宜良县| 若羌县| 深泽县| 阿瓦提县| 册亨县| 常宁市| 荥经县| 纳雍县| 云安县| 辽宁省| 积石山| 西乌珠穆沁旗| 仁怀市| 修武县| 体育| 于田县| 茶陵县| 红桥区| 莱西市| 玛多县| 独山县| 余江县| 伽师县| 池州市| 民丰县| 响水县| 昌平区| 锦屏县| 游戏| 龙陵县| 鹿邑县| 黄平县| 扬中市| 庆云县| 柳河县| 临桂县| 马关县|