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

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

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

1. 簡單工廠介紹

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

注意:簡單工廠模式 不屬于23種設計模式之列

2. 簡單工廠類圖UML

img

3. 簡單工廠角色說明

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

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

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

4. 代碼實現(xiàn)

簡單工廠實現(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 {
    //提供一個方法,基于不同的參數(shù)獲取不同的實例對象
    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)品的實例
  • 外界通過調(diào)用工廠類的靜態(tài)方法,傳入不同的參數(shù)創(chuàng)建不同的產(chǎn)品實例

5. 優(yōu)缺點

優(yōu)點:

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

缺點:

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

6. 使用場景

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

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

相關文章

最新評論

吉木乃县| 黎川县| 砚山县| 神农架林区| 平度市| 泽库县| 马尔康县| 云安县| 蚌埠市| 罗甸县| 道孚县| 邢台县| 夏津县| 红桥区| 青冈县| 乐安县| 青川县| 绿春县| 武义县| 渭源县| 婺源县| 义马市| 寿阳县| 云梦县| 龙门县| 迁安市| 基隆市| 宝清县| 会同县| 分宜县| 牡丹江市| 辽中县| 蓬莱市| 徐州市| 横峰县| 友谊县| 广河县| 阳曲县| 桦川县| 克拉玛依市| 盘山县|