java設計模式之行為型模式 策略模式

2021-07-11 13:01:15 字數 1668 閱讀 1673

策略模式,指物件有某個行為,但是在不同的場景中,該行為有不同的實現演算法。比如每個人都要「交個人所得稅」,但是「在美國交個人所得稅」和「在中國交個人所得稅」就有不同的算稅方法。

許多相關類僅僅是行為不同。

需要使用乙個演算法的不同實現。

演算法使用了客戶不應該知道的資料。策略模式可以避免暴露複雜的、與演算法相關的資料結構。

乙個類定義了很多行為,而且這些行為在這個類裡的操作以多個條件語句的形式出現。策略模式將相關的條件分支移入它們各自的 strategy 類中以代替這些條件語句。

首先定義策略介面:

/*** 乙個具體的策略應該實現該介面,並且乙個上下文物件context應該持有該介面的引用* @author dengfengdecao**/

public

inte***ce

strategy

該介面定義了乙個抽象的演算法。

有了策略介面,接下來就是乙個個具體的策略了:

public

class

firststrategy

implements

strategy

}

public

class

secondstrategy

implements

strategy

}

public

class

thirdstrategy

implements

strategy

}

以上定義了三個具體策略。接下來需要乙個上下文物件:

/*** 配置具體的策略並持有乙個strategy介面的引用* @author dengfengdecao**/

public

class

context

public

void

execute

()}

在這個物件裡,引用了策略介面,並定義了乙個建構函式來傳遞具體的策略物件。

最後在客戶端測試:

public

class

strategyclient

}

結果:

乙個更具體的例子可參考此文:

Java設計模式之行為型模式(命令模式)

命令模式由三部分構成 invoker 命令觸發器 executor 命令處理器 responder 命令響應器 命令模式將客戶端 也就是這裡的invoker命令觸發器 與服務端 responder命令響應器 兩者解耦。客戶端只需要關注自己傳送哪一條命令,而無需關注服務端的實現細節 服務端只需關注命令...

Java設計模式之行為型模式(狀態模式)

狀態模式允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。uml圖 已經上了注釋,很簡單,大家領會一下狀態模式的思想。author hanlin wang public class statemode 定義狀態類 class state public string getval...

23種設計模式之行為型模式 策略模式

策略模式它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。減少各種演算法類與使用演算法類之間的耦合 比如 商場收銀時如何 用打折還是返利,其實都是一些演算法,用工廠來生成演算法物件,這沒錯,但演算法本身只是一種策略,最重要的是這些演算法是隨時...