設計模式(java) 策略模式

2021-09-09 02:27:30 字數 1396 閱讀 8414

策略模式,行為型設計模式,指物件有某種行為,在不同的場景或需求中表現方式不同。乙個或多個場景下擁有一種表現方式。策略模式就是對這種場景設計的模式。

策略模式再軟體設計中是經常被使用的,且難度相對來說很小,這裡就不做過多的解釋了。如我們在設計乙個演算法時,它可能在不同的需求下演算法的公式不一樣。例如個人所得稅,各個國家的收稅演算法都是不一樣的,根據不同國家的需求,就會制定不同的策略。

策略模式分為如下角色:

抽象策略角色(istrategy):抽象介面,各個策略類的基類,宣告了策略方法體。

具體策略角色(concretestrategy):具體策略的實現者,不同的需求,就有不同的實現內容。

策略上下文(strategycontext):維護乙個抽象類物件的引用,內部對策略類的策略方法進行呼叫,完成客戶的策略需求。

這裡舉乙個比較簡單的例項,但同時擁有策略模式的五臟。如四則運算中我們有加減乘除,這四種計算就可以使四種策略演算法。客戶可以根據不同的需求申請不同的策略物件,從而實現相應的策略。**例項如下:

策略類

inte***ce

iarithmetic

class

eadd

implements

iarithmetic

}class

esub

implements

iarithmetic

}class

emulti

implements

iarithmetic

}class

ediv

implements

iarithmetic

return0;

}}

策略上下文

class

earithmeticcontext

public

intexecarithmetic

(int a,

int b)

}

客戶**

public

class

estrategy

}

輸出內容:

add arithmetic result: 12

sub arithmetic result: 0

multi arithmetic result: 36

div arithmetic result: 1

策略模式相對來說比較簡單,應用場景也比較廣泛,我們在需求上如果需要新增乙個策略時,就可以新增乙個策略類即可。然後提供給客戶進行策略選擇。

java 設計模式 策略模式

就是比較兩個類別時,要自己寫乙個比較器,這個比較器實現了 comparator介面,裡面實現public int compare object o1,object o2 方法。在實體類裡面要有乙個成員變數時這個比較器,這個實體類也要實現了 comparable介面。例如 cat有兩個屬性,heigh...

java設計模式 策略模式

策略模式 strategy pattern 體現了兩個非常基本的物件導向設計的原則 1 封裝變化的概念 2 程式設計中使用介面,而不是對介面的實現。策略模式定義了乙個共同的抽象演算法介面,其子類實現這個介面定義的方法,並且都有各自不同的實現,這些演算法實現可以在客戶端呼叫它們的時候互不影響的變化。子...

設計模式 java策略模式

相關的資料網上很多,我這裡自己總結一下。策略模式就是為了達到乙個目標,可以有多種方法 即多種策略 採用,為了減少類與類之間的耦合,所以採用如下措施 設定乙個介面,inte ce strategy,裡面有未實現的方法dothings strategya 繼承 strategy,strategyb 也繼...