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

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

 更新時(shí)間:2022年02月27日 14:58:23   作者:Asurplus、  
這篇文章主要為大家詳細(xì)介紹了Java中常用的設(shè)計(jì)模式之工廠(chǎng)模式,文中示例代碼介紹的非常詳細(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è)工廠(chǎng)類(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)工廠(chǎng),使得系統(tǒng)中類(lèi)的個(gè)數(shù)成倍增加,在一定程度上增加了系統(tǒng)的復(fù)雜度,同時(shí)也增加了系統(tǒng)具體類(lèi)的依賴(lài)。這并不是什么好事。

使用場(chǎng)景

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

2.數(shù)據(jù)庫(kù)訪(fǎng)問(wèn),當(dāng)用戶(hù)不知道最后系統(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)廠(chǎng)商是如何把手機(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è)工廠(chǎng)類(lèi)

package com.asurplus.common.factory;
/**
 * 手機(jī)工廠(chǎng)類(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;
/**
 * 工廠(chǎng)模式
 */
public class TestMain {
    public static void main(String[] args) {
        // 獲取手機(jī)
        Phone huaweiPhone = PhoneFactory.getPhone("華為");
        System.out.println(huaweiPhone.getPhone());
    }
}

輸出結(jié)果

在這里插入圖片描述

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

總結(jié)

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

相關(guān)文章

  • Java實(shí)現(xiàn)批量下載文件的示例代碼

    Java實(shí)現(xiàn)批量下載文件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)批量下載文件,并以壓縮輸出流的形式返回前端,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下
    2023-10-10
  • 微服務(wù)之間如何通過(guò)feign調(diào)用接口上傳文件

    微服務(wù)之間如何通過(guò)feign調(diào)用接口上傳文件

    這篇文章主要介紹了微服務(wù)之間如何通過(guò)feign調(diào)用接口上傳文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java安全編碼指南之:對(duì)象構(gòu)建操作

    java安全編碼指南之:對(duì)象構(gòu)建操作

    這篇文章主要介紹了java安全編碼指南之:對(duì)象構(gòu)建操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 高內(nèi)聚低耦合原則_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    高內(nèi)聚低耦合原則_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    耦合度就是某模塊(類(lèi))與其它模塊(類(lèi))之間的關(guān)聯(lián)、感知和依賴(lài)的程度,是衡量代碼獨(dú)立性的一個(gè)指標(biāo),也是軟件工程設(shè)計(jì)及編碼質(zhì)量評(píng)價(jià)的一個(gè)標(biāo)準(zhǔn)
    2017-08-08
  • 將springboot項(xiàng)目生成可依賴(lài)的jar并引入到項(xiàng)目中的方法

    將springboot項(xiàng)目生成可依賴(lài)的jar并引入到項(xiàng)目中的方法

    SpringBoot項(xiàng)目默認(rèn)打包的是可運(yùn)行jar包,也可以打包成不可運(yùn)行的jar包,本文給大家介紹將springboot項(xiàng)目生成可依賴(lài)的jar并引入到項(xiàng)目中的方法,感興趣的朋友一起看看吧
    2023-11-11
  • 在SpringBoot中使用YourKit進(jìn)行性能調(diào)優(yōu)的教程詳解

    在SpringBoot中使用YourKit進(jìn)行性能調(diào)優(yōu)的教程詳解

    在應(yīng)用程序的開(kāi)發(fā)過(guò)程中,性能調(diào)優(yōu)是一個(gè)重要的環(huán)節(jié),在SpringBoot應(yīng)用程序中,我們可以使用YourKit來(lái)進(jìn)行性能調(diào)優(yōu),YourKit是一款非常強(qiáng)大的Java性能調(diào)優(yōu)工具,在本文中,我們將介紹如何在 SpringBoot應(yīng)用程序中使用YourKit進(jìn)行性能調(diào)優(yōu)
    2023-06-06
  • Java多線(xiàn)程實(shí)現(xiàn)聊天客戶(hù)端和服務(wù)器

    Java多線(xiàn)程實(shí)現(xiàn)聊天客戶(hù)端和服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了Java多線(xiàn)程聊天客戶(hù)端和服務(wù)器實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Spring MVC多種情況下進(jìn)行文件上傳的實(shí)例

    Spring MVC多種情況下進(jìn)行文件上傳的實(shí)例

    上傳是Web工程中很常見(jiàn)的功能,SpringMVC框架簡(jiǎn)化了文件上傳的代碼,本文給大家總結(jié)了Spring MVC多種情況下進(jìn)行文件上傳的實(shí)例,并通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Java讀取properties文件內(nèi)容的幾種方式詳解

    Java讀取properties文件內(nèi)容的幾種方式詳解

    這篇文章主要介紹了Java讀取properties文件內(nèi)容的幾種方式詳解,讀取properties配置文件在實(shí)際的開(kāi)發(fā)中使用的很多,本文來(lái)介紹常用的幾種實(shí)現(xiàn)方式,需要的朋友可以參考下
    2023-11-11
  • Java超詳細(xì)講解繼承和多態(tài)的使用

    Java超詳細(xì)講解繼承和多態(tài)的使用

    繼承就是可以直接使用前輩的屬性和方法。自然界如果沒(méi)有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個(gè)接口,使用不同的實(shí)例而執(zhí)行不同操作
    2022-05-05

最新評(píng)論