設計模式學習筆記之三 策略模式

2021-09-01 17:54:17 字數 1117 閱讀 1267

策略模式:定義一系列演算法,分別分裝起來,這些演算法相互間可以替換並且不會影響到使用演算法的客戶。

例子:肯德基推出一系列**,**a(乙個巨無霸漢堡,一杯大可,乙份薯條)、**b(雙份漢堡,兩杯中可,乙份薯條)、**c(全家桶,一堆堆雞塊雞翅,一大瓶可樂)。假設乙個顧客來點餐只能點abc**中的乙個,按一般寫法**如下:

maximal

public class mainclass else if("mealb".equals(mealname)) else if("mealc".equals(mealname)) else }}

使用策略模式實現方式:

//**介面

public inte***ce meal

//**a演算法類

public class meala implements meal

}//**b演算法類

public class mealb implements meal

}//**c演算法類

public class mealc implements meal

}//上下文

public class mealcontext

//上下文介面

public void choosemeal()

}//業務**

public class mainclassforstrategy else if("mealb".equals(mealname)) else if("mealc".equals(mealname)) else

//呼叫具體實現演算法

context.choosemeal();}}

相比普通實現**,策略模式實現**的優點:

1、修改某個具體演算法的實現方式對其它演算法以及業務**沒有任何影響。(低耦合度)

2、新增乙個演算法對業務**的改動很小,配合工廠模式下幾乎不需要改動業務**,只需要增加相應演算法的具體實現即可。(擴充套件性強)

策略模式適用的場景:有幾種相似的行為,或者說演算法,客戶端需要動態地決定使用哪一種,那麼可以使用策略模式,將這些演算法封裝起來供客戶端呼叫。

設計模式之三 策略模式(泡妞講策略模式)

很多有關策略模式的例子都很單調,很理論化,不容易懂,使很多程式設計師望而卻步。以下這個例子是從泡妞出發講策略模式.有些人泡妞很厲害,每天換女朋友,有些人不懂女人心,看著人家換女朋友,其實泡妞也要有策略的。首先我們先寫乙個泡妞的類paoliu.php 泡妞策略v1.0版 email hjwtp2005...

設計模式筆記(三) 策略模式

策略模式 定義的演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義一種演算法的方法,從概念上看,所有這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有演算法,減少了各種演算法類與使用演算法類之間的耦合。優點 第...

設計模式學習筆記 策略模式

我覺得策略模式與工廠方法模式極其相似!策略模式 工廠方法模式 如果單從圖來看,看不出有何相似之處。但看看呼叫方法就知道了 策略模式 context context new context abstractstrategy strategy 採用哪種策略,由呼叫方決定 strategy new con...