欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?深入探究講解簡單工廠模式

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

1. 簡單工廠介紹

簡單工廠有一個(gè)具體的工廠類,可以生產(chǎn)不同的產(chǎn)品,屬于創(chuàng)建型設(shè)計(jì)模式。

注意:簡單工廠模式 不屬于23種設(shè)計(jì)模式之列

2. 簡單工廠類圖UML

img

3. 簡單工廠角色說明

簡單工廠(SimpleFactory):是簡單工廠模式的核心,負(fù)責(zé)實(shí)現(xiàn)創(chuàng)建所有實(shí)例的內(nèi)部邏輯,工廠類的創(chuàng)建產(chǎn)品類的方法可以被外界直接訪問,創(chuàng)建所需的產(chǎn)品對(duì)象。

抽象產(chǎn)品(Product):是簡單工廠創(chuàng)建所有對(duì)象的父類,負(fù)責(zé)描述所有實(shí)例公有的公共接口

具體產(chǎn)品(ConcreteProduct):是簡單工廠創(chuàng)建的具體對(duì)象

4. 代碼實(shí)現(xiàn)

簡單工廠實(shí)現(xiàn):

/**
 * 抽象產(chǎn)品,提供所有具體產(chǎn)品的共有的方法
 */
public interface Product {
    public void show();
}
?
/**
 * 具體產(chǎn)品1
 */
public class ConcreteProduct1 implements Product {
    @Override
    public void show() {
        System.out.println("具體產(chǎn)品1展示...");
    }
}
?
?
/**
 * 具體產(chǎn)品2
 */
public class ConcreteProduct2 implements Product {
    @Override
    public void show() {
        System.out.println("具體產(chǎn)品2展示...");
    }
}
?
/**
 * 簡單工廠
 */
public class SimpleFactory {
    //提供一個(gè)方法,基于不同的參數(shù)獲取不同的實(shí)例對(duì)象
    public static Product getConcreteProduct(int productType) {
        switch (productType) {
            case Const.Product1:
                return new ConcreteProduct1();
            case Const.Product2:
                return new ConcreteProduct2();
            case Const.Product3:
                return new ConcreteProduct3();
        }
        return null;
    }
?
?
    final class Const {
        static final int Product1 = 1;//表示是ConcreteProduct1產(chǎn)品
        static final int Product2 = 2;//表示是ConcreteProduct2產(chǎn)品
        static final int Product3 = 3;//表示是ConcreteProduct3產(chǎn)品
    }
    

調(diào)用方式:

        //獲取產(chǎn)品1
        Product product = SimpleFactory.getConcreteProduct(Const.Product1);
        product.show();
        //獲取產(chǎn)品2
        Product product1 = SimpleFactory.getConcreteProduct(Const.Product2);
        product1.show();

使用步驟:

  • 創(chuàng)建抽象產(chǎn)品類和定義具體產(chǎn)品的公共接口
  • 創(chuàng)建具體產(chǎn)品類,定義生產(chǎn)的具體產(chǎn)品
  • 創(chuàng)建工廠類,通過創(chuàng)建靜態(tài)方法根據(jù)傳入不同的參數(shù)從而創(chuàng)建不同的具體產(chǎn)品的實(shí)例
  • 外界通過調(diào)用工廠類的靜態(tài)方法,傳入不同的參數(shù)創(chuàng)建不同的產(chǎn)品實(shí)例

5. 優(yōu)缺點(diǎn)

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

  • 代碼邏輯比較簡單,工廠類包含必要的創(chuàng)建對(duì)象的邏輯,可以決定創(chuàng)建具體的產(chǎn)品
  • 調(diào)用方無需指導(dǎo)所創(chuàng)建具體產(chǎn)品的類名,只需要知道參數(shù)即可

缺點(diǎn):

  • 簡單工廠違背開閉原則,工廠類負(fù)責(zé)產(chǎn)品的創(chuàng)建職責(zé)過重,一旦新增產(chǎn)品需要對(duì)工廠類內(nèi)部邏輯新增判斷
  • 系統(tǒng)擴(kuò)展困難,產(chǎn)品過多會(huì)造成邏輯過于復(fù)雜

6. 使用場(chǎng)景

對(duì)于產(chǎn)品種類比較少的情況,可以考慮使用簡單工廠,調(diào)用方只需要傳入工廠類的參數(shù),不需要關(guān)注如何創(chuàng)建的邏輯.

到此這篇關(guān)于Java 深入探究講解簡單工廠模式的文章就介紹到這了,更多相關(guān)Java 簡單工廠模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot 如何添加容器啟動(dòng)的初始化邏輯的操作方法

    SpringBoot 如何添加容器啟動(dòng)的初始化邏輯的操作方法

    這篇文章主要介紹了SpringBoot 如何添加容器啟動(dòng)的初始化邏輯,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • mybatis中foreach嵌套if標(biāo)簽方式

    mybatis中foreach嵌套if標(biāo)簽方式

    這篇文章主要介紹了mybatis中foreach嵌套if標(biāo)簽方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java實(shí)現(xiàn)簡單猜數(shù)字小游戲

    Java實(shí)現(xiàn)簡單猜數(shù)字小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Java判斷變量是否為空問題的方法總結(jié)

    Java判斷變量是否為空問題的方法總結(jié)

    項(xiàng)目中經(jīng)常遇到對(duì)象判空,下面這篇文章主要給大家介紹了關(guān)于Java判斷變量是否為空問題的方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 淺談java 執(zhí)行jar包中的main方法

    淺談java 執(zhí)行jar包中的main方法

    下面小編就為大家?guī)硪黄獪\談java 執(zhí)行jar包中的main方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • 基于IDEA,Eclipse搭建Spring Boot項(xiàng)目過程圖解

    基于IDEA,Eclipse搭建Spring Boot項(xiàng)目過程圖解

    這篇文章主要介紹了基于IDEA,Eclipse搭建Spring Boot項(xiàng)目過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽

    Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽

    這篇文章主要介紹了Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java利用Request請(qǐng)求獲取IP地址的方法詳解

    Java利用Request請(qǐng)求獲取IP地址的方法詳解

    在開發(fā)中我們經(jīng)常需要獲取用戶IP地址,通過地址來實(shí)現(xiàn)一些功能,下面這篇文章主要給大家介紹了關(guān)于Java利用Request請(qǐng)求獲取IP地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • Java語言的Comparable和Comparator區(qū)別

    Java語言的Comparable和Comparator區(qū)別

    這篇文章主要介紹了Java語言的Comparable和Comparator區(qū)別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • SpringBoot系列教程JPA之基礎(chǔ)環(huán)境搭建的方法

    SpringBoot系列教程JPA之基礎(chǔ)環(huán)境搭建的方法

    這篇文章主要介紹了SpringBoot系列教程JPA之基礎(chǔ)環(huán)境搭建的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評(píng)論