uml圖
**結構為了方便**閱讀,只寫了折扣和滿x減y員的策略類
}
/** 折扣類 */
public
class
cashrebate
extends
cashsuper
@override
public
double
acceptcash(double money)
public
double
getmoneyrebate()
public
void
setmoneyrebate(double moneyrebate)
}
/** 滿x減y類 */
public
class
cashreturn
extends
cashsuper
@override
public
double
acceptcash(double money)
return result;
}public
double
getmoneycondition()
public
void
setmoneycondition(double moneycondition)
public
double
getmoneyreturn()
public
void
setmoneyreturn(double moneyreturn)
}
public
abstract
class
cashsuper
public
class
client
double realprice = context.getresult(originprice);
system.out.println("realprice: " + realprice);}}
個人總結:
1.策略模式與**模式、命令模式的區別
策略模式:context類只將策略的行為抽取出來進行統一實現,並不知道策略內部詳細資訊,乙個context統一了多個策略
**模式:乙個proxy只對應乙個被**物件,proxy與被**物件實現的是同乙個介面,從**看,被**隊形(書中的persuit類)中還包含了乙個schoolgirl物件。參考:
命令模式:命令模式含有不同的請求做不同的事,隱藏接收者的執行細節,常見選單事件,策略模式含有不同的演算法做相同的事,區別在於時候含有接收者,命令模式有,策略模式沒有。命令模式中的命令可以單獨執行。參考
大話設計模式之策略模式
策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各種演算法類與使用演算法類之間的耦合。策略模式的strategy類層次為context定義了一系列的可供重用的演算法或行為。繼承有助於吸取出這些演算法中的公...
大話設計模式策略模式c 實現
其他二十三種設計模式 include using namespace std 策略模式 strategy 定義演算法家族,分別封裝起來,讓演算法之間可以相互替換,且不會影響到使用演算法的client客戶 抽象收費策略 class cashsuper 正常收費類 class cashnormal pu...
大話設計模式Python實現 策略模式
策略模式 strategy pattern 它定義了演算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶.下面是乙個商場活動的實現 1 usr bin env python2 coding utf 8 34 author andy 5 6 大話設計模式 ...