国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計模式:策略模式和工廠模式混合使用

這篇具有很好參考價值的文章主要介紹了設(shè)計模式:策略模式和工廠模式混合使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

有時單個設(shè)計模式并不能滿足我們的業(yè)務(wù)需求,這個時候就要根據(jù)具體的業(yè)務(wù)來混合使用設(shè)計模式,其中策略模式和工廠模式是比較常用的一個組合。工廠模式可以管理具體策略的生命周期,策略模式可以豐滿具體細(xì)節(jié)的邏輯。

代碼示例

interface Strategy {
    void execute();
}
 // 具體策略類1
class StrategyImpl1 implements Strategy {
    @Override
    public void execute() {
        System.out.println("執(zhí)行策略1");
    }
}
 // 具體策略類2
class StrategyImpl2 implements Strategy {
    @Override
    public void execute() {
        System.out.println("執(zhí)行策略2");
    }
}
 // 工廠接口
interface Factory {
    Strategy createStrategy();
}
 // 具體工廠類1
class FactoryImpl1 implements Factory {
    @Override
    public Strategy createStrategy() {
        return new StrategyImpl1();
    }
}
 // 具體工廠類2
class FactoryImpl2 implements Factory {
    @Override
    public Strategy createStrategy() {
        return new StrategyImpl2();
    }
}
 // 測試類
public class Main {
    public static void main(String[] args) {
        Factory factory1 = new FactoryImpl1();
        Strategy strategy1 = factory1.createStrategy();
        strategy1.execute();
         Factory factory2 = new FactoryImpl2();
        Strategy strategy2 = factory2.createStrategy();
        strategy2.execute();
    }
}

在這個示例中,我們定義了一個策略接口和兩個具體策略類。然后,我們創(chuàng)建了一個工廠接口和兩個具體工廠類,每個工廠類負(fù)責(zé)創(chuàng)建不同的策略實例。最后,在測試類中,我們使用工廠類創(chuàng)建了不同的策略實例,并調(diào)用它們的執(zhí)行方法。

以上只是個簡單的示例,我們可以把工廠模式用map改進(jìn)一下,并不需要這么多的子工廠類。

interface Strategy {
    void execute();
}

// 具體策略類1
class StrategyImpl1 implements Strategy {
    @Override
    public void execute() {
        System.out.println("執(zhí)行策略1");
    }

	@PostConstruct
	public void registryFactory(){
		Factory.CHOOSER_MAP.registry("1",this);
	}
}

// 具體策略類2
class StrategyImpl2 implements Strategy {
    @Override
    public void execute() {
        System.out.println("執(zhí)行策略2");
    }

	@PostConstruct
	public void registryFactory(){
		Factory.CHOOSER_MAP.registry("2",this);
	}
}

// 工廠接口
public class Factory {

    private final static Map<String, Strategy > CHOOSER_MAP = new ConcurrentHashMap<>();

    public static void registry(String code, Strategy strategy ) {
        CHOOSER_MAP.put(code, strategy );
    }

    public static Strategy chose(String code) {
		CHOOSER_MAP.get(code);
    }
}

// 測試類
public class Main {
    public static void main(String[] args) {
        StrategyImpl1  StrategyImpl1  = PlatformChooserFactory.chose(1);

		StrategyImp2  StrategyImpl2  = PlatformChooserFactory.chose(2);
    }
}

以上就是改造后的代碼,這樣就比較簡單直觀了。工廠類中我們使用map去存儲具體的策略類,并且提供注冊和獲取方法。具體策略類在初始化的時候,會把當(dāng)前類注冊到工廠類的map中。這樣我們使用的時候,只要根據(jù)具體的key就可以拿到具體的策略類。

優(yōu)缺點

優(yōu)點:

  1. 靈活性:策略模式允許在運(yùn)行時選擇不同的策略,而工廠模式可以根據(jù)需求創(chuàng)建相應(yīng)的對象。這種組合可以使系統(tǒng)更加靈活,能夠根據(jù)不同的需求選擇合適的策略和對象。
  2. 可擴(kuò)展性:通過工廠模式,可以輕松添加新的具體產(chǎn)品或策略,而無需修改現(xiàn)有代碼。這使得系統(tǒng)更容易擴(kuò)展,可以根據(jù)需要動態(tài)添加新的產(chǎn)品和策略。
  3. 代碼復(fù)用:策略模式和工廠模式都鼓勵代碼的重用。策略模式中的策略和工廠模式中的產(chǎn)品可以在不同的上下文中被重復(fù)使用,避免了重復(fù)編寫相似的代碼。
  4. 松耦合:策略模式和工廠模式的結(jié)合可以實現(xiàn)松耦合的設(shè)計。策略模式通過接口與具體策略解耦,工廠模式通過抽象工廠與具體產(chǎn)品解耦。這種松耦合設(shè)計使得系統(tǒng)更加靈活、可維護(hù)和可測試。

缺點:

  1. 增加復(fù)雜性:使用策略模式和工廠模式的混合會增加代碼的復(fù)雜性,需要定義多個接口、類和實現(xiàn)。這可能會增加開發(fā)和維護(hù)的成本。
  2. 增加類的數(shù)量:使用策略模式和工廠模式的混合可能導(dǎo)致類的數(shù)量增加,特別是在有多個具體策略和產(chǎn)品時。這可能會增加系統(tǒng)的復(fù)雜性和內(nèi)存占用。

總結(jié)

需要根據(jù)具體的應(yīng)用場景和需求來權(quán)衡使用策略模式和工廠模式的混合。在某些情況下,這種組合可以提供更靈活、可擴(kuò)展和可維護(hù)的設(shè)計,但也需要考慮代碼復(fù)雜性和類的數(shù)量增加的影響。文章來源地址http://www.zghlxwxcb.cn/news/detail-732002.html

到了這里,關(guān)于設(shè)計模式:策略模式和工廠模式混合使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++ 程序設(shè)計:四大模式(工廠+裝飾+策略+觀察者)

    \\\"工廠+裝飾+策略+觀察者\(yùn)\\"是常見且常用的設(shè)計模式之一,但并不是指稱\\\"四大模式\\\"的官方術(shù)語。 \\\" 四大模式 \\\"通常是指指令式面向?qū)ο缶幊讨械乃膫€基本概念: 封裝 、 繼承 、 多態(tài) 和 抽象 。這四個概念是面向?qū)ο缶幊痰幕?工廠模式( 例:工廠方法模式 )中,通常存在

    2024年02月17日
    瀏覽(30)
  • 學(xué)習(xí)筆記-設(shè)計模式-創(chuàng)建型模式-工廠模式

    工廠模式是一種創(chuàng)建者設(shè)計模式,細(xì)分之下可以分成三類 簡單工廠模式 , 工廠方法模式 和 抽象工廠模式 。 簡單工廠模式 最簡單的工廠模式,它采用靜態(tài)方法的方式來決定應(yīng)該應(yīng)該生產(chǎn)什么商品。 它的優(yōu)點在于 將創(chuàng)建實例的工作與使用實例的工作分開,使用者不必關(guān)心類

    2024年02月10日
    瀏覽(19)
  • 【設(shè)計模式】使用 go 語言實現(xiàn)簡單工廠模式

    最近在看《大話設(shè)計模式》,這本書通過對話形式講解設(shè)計模式的使用場景,有興趣的可以去看一下。 第一篇講的是 簡單工廠模式 ,要求輸入兩個數(shù)和運(yùn)算符號,得到運(yùn)行結(jié)果。 這個需求不難,難就難在類要怎么設(shè)計,才能達(dá)到可復(fù)用、維護(hù)性強(qiáng)、可拓展和靈活性高。 運(yùn)

    2024年02月05日
    瀏覽(31)
  • 【設(shè)計模式】什么場景可以考慮使用簡單工廠模式

    【設(shè)計模式】什么場景可以考慮使用簡單工廠模式

    工廠模式是一種創(chuàng)建型模式,主要作用就是創(chuàng)建對象,將對象的創(chuàng)建過程和使用的過程進(jìn)行解耦。我們平時說的工廠模式實際上是對三種不同類型的工廠模式的統(tǒng)稱, 簡單工廠、工廠方法、抽象工廠 ,而在23種設(shè)計模式中,只定義了工廠方法和抽象工廠,將簡單工廠看作是工

    2024年01月18日
    瀏覽(28)
  • 【設(shè)計模式】SpringBoot優(yōu)雅使用策略模式

    【設(shè)計模式】SpringBoot優(yōu)雅使用策略模式

    本篇文章主要會描述SpringBoot與策略模式的結(jié)合使用,因為不涉及到理論部分,所以在閱讀本篇之前,需要對策略模式的理論已經(jīng)有了一個基本的了解。 策略模式有3種角色,分別為: 選擇器 、 抽象策略 、 策略實例 。 其中 選擇器 selector 又被稱為上下文 context ,其作用為通

    2024年02月10日
    瀏覽(21)
  • 【設(shè)計模式——學(xué)習(xí)筆記】23種設(shè)計模式——策略模式Strategy(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    【設(shè)計模式——學(xué)習(xí)筆記】23種設(shè)計模式——策略模式Strategy(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    有各種鴨子,比如野鴨、北京鴨、水鴨等。 鴨子有各種行為,比如走路、叫、飛行等。不同鴨子的行為可能略有不同。要求顯示鴨子的信息 不同的鴨子繼承一個父類Duck,如果是相同的行為就繼承,不同行為就重寫方法 實現(xiàn) 【鴨子抽象類】 【野鴨】 【北京鴨】 【玩具鴨】

    2024年02月12日
    瀏覽(35)
  • 自學(xué)設(shè)計模式(簡單工廠模式、工廠模式、抽象工廠模式)

    使用工廠模式來生產(chǎn)某類對象(代碼簡化且容易維護(hù),類之間有血緣關(guān)系,可以通過工廠類進(jìn)行生產(chǎn)); 簡單工廠模式(用于創(chuàng)建簡單對象) 對于簡單工廠模式,需要的工廠類只有一個; 在工廠類中的公共成員函數(shù)來創(chuàng)建所需對象; 工廠模式 簡單工廠模式會違反開放封閉

    2024年02月11日
    瀏覽(27)
  • 反射和工廠設(shè)計模式---工廠設(shè)計模式

    工廠模式(Factory Pattern)是開發(fā)中比較常用的設(shè)計模式之一。 它屬于創(chuàng)建型模式(單例模式就是創(chuàng)建型模式的一種),這種模式讓我們 在創(chuàng)建對象時不會直接暴露創(chuàng)建邏輯,而是通過使用一個共同的接口來完成對象的創(chuàng)建 。 工廠模式可以分為三種,分別是簡單工廠模式、工廠方

    2024年02月13日
    瀏覽(22)
  • 設(shè)計模式(二)、工廠模式--簡單工廠模式

    簡單工廠模式:又叫做靜態(tài)工廠方法模式,是由一個工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實例。 需要注意的是:簡單工廠模式屬于創(chuàng)建型模式,但不屬于23種GOF設(shè)計模式之一? 該模式主要有以下幾個模塊構(gòu)成: 具體說明結(jié)合代碼,如下: 代碼中主要是有一個cake接父類,兩個

    2024年02月13日
    瀏覽(22)
  • 設(shè)計模式(二)、工廠模式--工廠方法模式

    工廠方法模式是一種常用的創(chuàng)建型設(shè)計模式。它解決了簡單工廠模式的問題:如違反了開閉原則,其次可以用于更復(fù)雜的結(jié)構(gòu) 它的核心結(jié)構(gòu)有四個角色? 抽象工廠;具體工廠;抽象產(chǎn)品;具體產(chǎn)品 抽象工廠(抽象類或接口)不在負(fù)責(zé)具體的創(chuàng)建過程,即具體的代碼實現(xiàn)。只制定

    2024年02月16日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包