溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java簡單工廠模式怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2022-02-23 15:12:22 來源:億速云 閱讀:112 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下Java簡單工廠模式怎么實(shí)現(xiàn)的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一、軟件設(shè)計(jì)模式的概述

軟件設(shè)計(jì)模式,我們又稱之為設(shè)計(jì)模式。既然是模式,那么它就是按照一定規(guī)律指定的。也正是如此,設(shè)計(jì)模式就是一套被反復(fù)使用、大多數(shù)人都知道的、經(jīng)過整理分類的、前人代碼設(shè)計(jì)理念和經(jīng)驗(yàn)的總結(jié)。它存在的目的,就是為了提高代碼的可重用性、可讀性以及可靠性。

二、簡單工廠模式

1、簡述

縱觀人類歷史,工廠從最開始的自產(chǎn)自銷的模式,到后來的農(nóng)耕社會的小作坊模式,再接著工業(yè)改革后的流水線模式,到現(xiàn)在的形成現(xiàn)代化產(chǎn)業(yè)鏈模式。同樣的道理,我們的項(xiàng)目代碼也是從簡單到繁雜,逐步迭代而來的。對于調(diào)用者而言,卻是越來越來簡單。就像是我們不用考慮工廠是怎么生產(chǎn)東西的,我們只需要購買即可。

按照實(shí)際業(yè)務(wù)場景,我們可以把工廠模式劃分為三種不同的實(shí)現(xiàn)方式:簡單工廠模式、工廠方法模式以及抽象工廠模式。

在這里,我們把被創(chuàng)建的對象稱之為“產(chǎn)品”,把創(chuàng)建產(chǎn)品的對象稱之為"工廠"。如果創(chuàng)建的產(chǎn)品很少,只需要一個(gè)工廠類就可以完成,那么我們就把這種模式稱之為簡單工廠模式。

2、優(yōu)缺點(diǎn)分析

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

  1. 工廠類必須要包含邏輯判斷,用來決定在什么時(shí)間創(chuàng)建哪個(gè)產(chǎn)品的實(shí)例??蛻舳司筒挥贸袚?dān)直接創(chuàng)建產(chǎn)品對象的責(zé)任,可以方便快捷地創(chuàng)建出相應(yīng)的產(chǎn)品。

  2. 客戶端不需要知道創(chuàng)建具體產(chǎn)品的類名,只要知道相關(guān)參數(shù)即可。

  3. 可以通過引入配置文件,在不修改客戶端代碼的前提下對具體產(chǎn)品類進(jìn)行更換或者添加。

缺點(diǎn)

  1. 簡單工廠模式工廠類比較單一,承擔(dān)了所有產(chǎn)品的職責(zé)。一旦出現(xiàn)異常,那么整個(gè)系統(tǒng)將會受到影響。且工廠類代碼會十分的臃腫,違背了高聚合原則。

  2. 使用簡單工廠模式引入新的工廠類,會增加系統(tǒng)的復(fù)雜度和理解難度。

  3. 系統(tǒng)擴(kuò)展的難度較高,添加新產(chǎn)品就不得不修改邏輯。在產(chǎn)品過多的時(shí)候,會造成邏輯過于復(fù)雜的問題。

  4. 簡單工廠模式使用的是static工廠方法,那么會造成工廠角色無法形成基于繼承的等級結(jié)構(gòu)。

應(yīng)用場景:簡單工廠模式適用于產(chǎn)品種類較少的情況下。

3、模式的結(jié)構(gòu)和實(shí)現(xiàn)

簡單工廠模式的主要角色劃分:

  • 簡單工廠(SimpleFactory):是該設(shè)計(jì)模式的核心,主要負(fù)責(zé)實(shí)現(xiàn)創(chuàng)建所有實(shí)例的內(nèi)部邏輯。

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

  • 具體產(chǎn)品(ConcreteProduct):是該設(shè)計(jì)模式的創(chuàng)建目標(biāo),

代碼實(shí)現(xiàn):

public class Client {
    public static void main(String[] args) {
    }
    //抽象產(chǎn)品
    public interface Product {
        void show();
    }
    //具體產(chǎn)品:ProductA
    static class ConcreteProduct1 implements Product {
        public void show() {
            System.out.println("具體產(chǎn)品1顯示...");
        }
    }
    //具體產(chǎn)品:ProductB
    static class ConcreteProduct2 implements Product {
        public void show() {
            System.out.println("具體產(chǎn)品2顯示...");
        }
    }
    final class Const {
        static final int PRODUCT_A = 0;
        static final int PRODUCT_B = 1;
        static final int PRODUCT_C = 2;
    }
    static class SimpleFactory {
        public static Product makeProduct(int kind) {
            switch (kind) {
                case Const.PRODUCT_A:
                    return new ConcreteProduct1();
                case Const.PRODUCT_B:
                    return new ConcreteProduct2();
            }
            return null;
        }
    }
}

以上就是“Java簡單工廠模式怎么實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI