工廠模式 策略模式

2021-10-14 06:48:30 字數 1472 閱讀 5298

目前遇到這樣乙個場景,就是會根據前端不同的傳值執行對應的方法策略。按照正常思路,需要在**中使用if判斷前端的值來執行不同的方法。但這樣做的缺點是會造成大量if判斷,且下次新增加乙個值對應乙個策略,那麼就需要改動**。

對於這種根據值來執行不同策略的場景,可以使用工廠模式+策略模式來解決。

既然有策略,那麼我們就需要定義乙個策略介面或策略抽象類。

public

inte***ce

strategy

定義具體策略類,這裡定義了兩個策略類

@component

public

class

strategya

implements

strategy

@override

public string getstrategyname()

}@component

public

class

strategyb

implements

strategy

@override

public string getstrategyname()

}

定義工廠介面

public

inte***ce

factory

具體策略工廠

@component

public

class

strategyfactory

implements

factory

// 註冊策略類到工廠的map中

@override

public

void

registerstrategy

(strategy strategy)

}

在這裡我們需要將策略類放入工廠的map集合中,所以需要有乙個註冊策略類的步驟,使用spring boot我們可以監聽容器事件來註冊

@component

public

class

startaction

implements

}}

經過以上步驟我們的所有準備都完成,接下來就可以使用

// 當strategyname的值不同時,會獲取到不同的策略例項。當我們要新增乙個策略時,只需實現strategy介面 

strategy strategy = factory.

createstrategy

(strategyname)

; strategy.

dooperation()

;

策略模式,模板模式,工廠模式

自己不關心類是怎麼來的.我想要汽車,直接去 4s 店提就好,不用自己拼零件 spring 的 ioc dagger 都是這種依賴注入框架.舉個具體應用的例子 你哪天心情好把類名改了。或者把構造函式引數改了 增加或減少引數 而你 中又有n處new了這個類。如果你又沒用工廠。那你慘了。乙個乙個找來改吧。...

設計模式之簡單工廠模式,工廠模式,策略模式

簡單工廠模式 的最大優點是在工廠類中包含了必要的邏輯判斷,根據客戶端的選擇動態例項化相關類,去得到客戶想要的產品。但個人覺得簡單工廠模式的最大優點正是產生它最大缺點之處。因為它的工廠類違反了開放 封閉原則 類,模組,方法等對於擴充套件是開放的,對於更改是封閉的。每當新增乙個功能,我們就需要去修改它的...

大話設計模式 工廠模式 策略模式

工廠模式 以商場收費系統為例。打折 正常 送積分等手段 首先,有乙個抽象類cashsuper 收費操作,有三個繼承cashsuper的子類 cashnormal具體操作,重寫函式 其次,寫乙個cashfactory工廠類,來生產具體的操作類cashnormal等。策略模式 先寫乙個策略抽象類,然後寫...