在策略模式(strategy pattern)中,乙個類的行為或其演算法可以在執行時更改。這種型別的設計模式屬於行為型模式。在策略模式中,我們建立表示各種策略的物件和乙個行為隨著策略物件改變而改變的 context 物件。策略物件改變context 物件的執行演算法。
定義一系列的演算法,把它們乙個個封裝起來, 並且使它們可相互替換。
在有多種演算法相似的情況下,使用 if…else 所帶來的複雜和難以維護
1、諸葛亮的錦囊妙計,每乙個錦囊就是乙個策略。 2、旅行的出遊方式,選擇騎自行車、坐汽車,每一種旅行方式都是乙個策略。program.cs
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace 策略模式
}}
strategy.cs
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace 策略模式
}public void getresult()
}//抽象演算法類
abstract class strategy
//具體演算法a
class concretestartegya : strategy
}//具體演算法b
class concretestartegyb : strategy
}//具體演算法c
class concretestartegyc : strategy
}}
3 策略模式
何時使用 1.封裝變化點是物件導向的乙個重要思路,就和第一節提到的一樣。2.策略模式 是一種定義一系列演算法的模式,這些方法完成的都是相同工作,只是實現不同,該模式可以以相同的介面呼叫來呼叫所有的演算法和實現,以減少各個演算法中的耦合度。優點 1.多個類只在演算法實現上不同,可以使用策略模式,在執行...
設計模式3策略模式
一種定義一系列演算法的方法,從概念上來看所有這些演算法完成的都是相同的工作,只是實現不同,它們可以以相同的方式呼叫相同的演算法,減少了各種演算法類和使用演算法類之間的耦合 策略模式的 策略類 為 所有context 定義了一系列的可供重用的演算法和行為.繼承有助於析取出這些演算法中的公共行為 策略模...
C 設計模式3 (策略模式)
策略模式是將演算法的不同實現封裝到乙個類裡面,將演算法的實現和演算法的使用分離。在演算法發生變化時不會影響演算法的呼叫者。在需要不同演算法時,可以相互替換,而不影響使用者。下面是uml圖 以下是策略基類和子類 ifndef basestrategyinte ce h define basestrat...