策略模式:定義一系列演算法,分別分裝起來,這些演算法相互間可以替換並且不會影響到使用演算法的客戶。
例子:肯德基推出一系列**,**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...