原**:
**做如下修改:
#include
using
namespace std;
/*付款金額計算的抽象類*/
class
cashsuper
;/*正常收費策略*/
class
cashnormal
:public cashsuper };
/*打折收費策略*/
class
cashrebate
:public cashsuper
virtual
double
acceptcash
(double money)};
/*返現收費策略*/
class
cashreturn
:public cashsuper
virtual
double
acceptcash
(double money)
return result;}}
;/* 收費策略 */
class
cashcontext}~
cashcontext()
/*得到現金計算結果(利用了多型機制,不同的策略行為導致不同的結果)*/
double
getresult
(double money )};
intmain()
運輸結果:
350280
250
C 設計模式 裝飾著模式(高屋建瓴)
原 include include using namespace std person 類 class person person std string name virtual void show 當你用乙個基類指標或引用指向乙個繼承類物件的時候,呼叫乙個虛函式時,實際呼叫的是繼承類的版本。pr...
c 設計模式 策略模式
策略模式,看完策略模式最大的感受就是將所有的演算法封裝起來,讓它們之間可以相互替換,這個模式讓演算法的變化不會影響到使用者。我寫的例子還是之前的那個簡易計算器,策略模式可以和簡單工廠模式結合,在客戶端中只需認識乙個concent類,將所有的演算法物件建立以及演算法的使用全部封裝在乙個類中,即conc...
C 設計模式 策略模式
策略模式 定義了演算法家族,分別封裝起來,然後定義乙個統一的藉口,演算法之間可以相互替換。使用該模式可以讓演算法的變化不影響到使用演算法的客戶。模式實現 策略模式具體實現時通常與工廠模式相結合,定義乙個工廠類,來決定初始化哪個演算法。如下 include using namespace std en...