《大話設計模式》java實現之策略模式

2021-08-10 17:29:58 字數 1704 閱讀 2661

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 大話設計模式 ...