看完了策略模式的講解,然後將之於之前的簡單工廠模式對比了一下,策略模式就是將具體的演算法變化封裝了一下,可以將兩者結合一起使用,這樣的話封裝度會更加高一點,而且在更改演算法和新增演算法的時候更加方便。
《大話設計模式》書中是用商場收銀做例子,我將之用簡單工廠模式做了之後,現在把之前的計算例子再拿出來給一下,這個例子比較小,看起來比較明了。
class operate //演算法類基類
//numbera賦值
void setnumb(double b) //numberb賦值
double getnuma() //獲取numbera值
double getnumb() //獲取numberb值
virtual double getresult() //虛函式 用於實現多型 實現派生類的getresult()函式
};class operateadd : public operate //加法演算法類
}; class operatesub : public operate //減法演算法類
};class operatemul : public operate //乘法演算法類
};class operatediv : public operate //除法演算法類
else
} catch(const char* msg)
double getresult() //將結果輸出 };
int main()
{ try
{ double numa, numb;
char ope;
cout<
cin>>numa;
cout<
cin>>ope;
cout<
cin>>numb;
operacontext oft(ope, numa, numb); //定義例項
// operato***ctory oft;
// operate *my_oper = oft.operatorcreate(ope);
// my_oper->setnuma(numa);
// my_oper->setnumb(numb);
cout<
簡單工廠模式做的時候,客戶端需要認識兩個類工廠類operato***ctory類和演算法基類operate類,而用簡單工廠模式和策略模式共用的時候,客戶端只需要認識乙個類operacontext類,只需將運算子和運算元傳入operacontext的建構函式,然後呼叫顯示結果函式就可以的,這樣的話封裝度就比之前更加高一級了。
學習設計模式 策略模式
以下絕大部分內容 大話設計模式 c 定義演算法家族,分別封裝起來,讓它們之間可以互相替換,讓演算法變化,不會影響到使用者 good 適合類中的成員以方法為主,演算法經常變動 簡化了單元測試 因為每個演算法都有自己的類,可以通過自己的介面單獨測試。策略模式和簡單工廠基本相同,但簡單工模式只能解決物件建...
設計模式學習 策略模式
使用策略模式可以代替多重if else和switch語句,讓 維護變得更加簡單,乍一看跟工廠模式一模一樣,下面是個簡單的例子。策略模式包含以下三種角色 抽象策略角色 定義策略介面 public inte ce weather具體策略角色 實現策略介面 author jhz date 18 10 31...
設計模式學習筆記 策略模式
我覺得策略模式與工廠方法模式極其相似!策略模式 工廠方法模式 如果單從圖來看,看不出有何相似之處。但看看呼叫方法就知道了 策略模式 context context new context abstractstrategy strategy 採用哪種策略,由呼叫方決定 strategy new con...