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

Java中常用的設計模式之工廠模式詳解

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

優(yōu)點

1.一個調用者想創(chuàng)建一個對象,只要知道其名稱就可以了。

2.擴展性高,如果想增加一個產品,只要擴展一個工廠類就可以。

3.屏蔽產品的具體實現,調用者只關心產品的接口。

缺點

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

使用場景

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

2.數據庫訪問,當用戶不知道最后系統(tǒng)采用哪一類數據庫,以及數據庫可能有變化時。

3.設計一個連接服務器的框架,需要三個協(xié)議,“POP3”、“IMAP”、“HTTP”,可以把這三個作為產品類,共同實現一個接口。

一、實現方式

例如:我們需要在電商平臺購買一臺手機,我們并不需要去關心手機生產廠商是如何把手機生產出來的,我們只需要在搜索框輸入:華為手機,小米手機,就能購買到我們想要的手機了。下面看看具體實現吧。

1、定義一個接口

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

2、定義兩個接口實現類

package com.asurplus.common.factory;
/**
 * 華為手機實現類
 */
public class HuaweiPhone implements Phone {
    @Override
    public String getPhone() {
        return "華為手機";
    }
}
package com.asurplus.common.factory;
/**
 * 小米手機實現類
 */
public class XiaomiPhone implements Phone {
    @Override
    public String getPhone() {
        return "小米手機";
    }
}

3、定義一個工廠類

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

二、測試

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

輸出結果

在這里插入圖片描述

我們輸入的:華為,得到了華為手機,從而實現了我們的工廠模式。

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!  

相關文章

  • SpringBoot集成Spring Data JPA及讀寫分離

    SpringBoot集成Spring Data JPA及讀寫分離

    這篇文章主要介紹了SpringBoot集成Spring Data JPA及讀寫分離的相關知識,需要的朋友可以參考下
    2017-04-04
  • Java使用hutool實現文件大小的友好輸出

    Java使用hutool實現文件大小的友好輸出

    這篇文章主要為大家詳細介紹了Java如何使用hutool實現文件大小的友好輸出,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解下
    2023-11-11
  • Java日常練習題,每天進步一點點(9)

    Java日常練習題,每天進步一點點(9)

    下面小編就為大家?guī)硪黄狫ava基礎的幾道練習題(分享)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • 不可不知道的10個java謊言

    不可不知道的10個java謊言

    這篇文章主要為大家詳細介紹了不可不知道的10個java謊言,大家一定要謹慎,需要了解的朋友可以參考一下
    2016-09-09
  • Java HttpClient-Restful工具各種請求高度封裝提煉及總結

    Java HttpClient-Restful工具各種請求高度封裝提煉及總結

    這篇文章主要介紹了Java HttpClient-Restful工具各種請求高度封裝提煉及總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Windows下Java調用OCR進行圖片識別

    Windows下Java調用OCR進行圖片識別

    這篇文章主要為大家詳細介紹了Windows下Java調用OCR進行圖片識別,通過Tesseract-OCR對圖片進行識別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Java NIO和IO的區(qū)別

    Java NIO和IO的區(qū)別

    這篇文章主要介紹了Java NIO和IO的區(qū)別,需要的朋友可以參考下
    2014-06-06
  • Spring與bean有關的生命周期示例詳解

    Spring與bean有關的生命周期示例詳解

    這篇文章主要給大家介紹了關于Spring與bean有關的生命周期的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-07-07
  • Java使用itextpdf實現Excel轉PDF

    Java使用itextpdf實現Excel轉PDF

    這篇文章主要為大家詳細介紹了Java如何使用itextpdf實現Excel轉PDF,并且支持xlsx和xls兩種格,文中的示例代碼講解詳細,希望對大家有所幫助
    2024-01-01
  • 詳解Java中l(wèi)ist,set,map的遍歷與增強for循環(huán)

    詳解Java中l(wèi)ist,set,map的遍歷與增強for循環(huán)

    這篇文章主要介紹了詳解Java中l(wèi)ist,set,map的遍歷與增強for循環(huán)的相關資料,需要的朋友可以參考下
    2017-02-02

最新評論

广饶县| 宜君县| 长白| 壶关县| 同仁县| 禹城市| 霍山县| 侯马市| 肇州县| 崇义县| 太和县| 嘉义县| 闸北区| 商洛市| 建阳市| 枝江市| 石首市| 玉林市| 福泉市| 哈密市| 林周县| 海阳市| 怀安县| 承德市| 九寨沟县| 临猗县| 宁夏| 兴安盟| 永胜县| 乳山市| 孙吴县| 金平| 平原县| 察雅县| 漳平市| 青海省| 贡觉县| 专栏| 河池市| 西华县| 佛学|