c++之策略模式

c++之策略模式

概念

策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也就是说这些算法所完成的功能一样,对外的接口一样,只对于不同的“消息”,所产生的行为不同,及面对同一指令,采取的实现方式不同,与c++中多态有一些相似.
就举一个例子,一家商店进行打折活动,同一件物品对于采取不同的人的打折情况不同,普通人打八折,会员打七折,超级会员打五折,像这样对于同一件商品所采取的支付方式不同,我们就可以采用策略模式。
不同类对同一个消息做出不同的反应像这种情况我们就可以用到策略模式.

图示

c++之策略模式
Context 指向 Strategy ;Context 通过 Strategy 接口,调用一系列算法(实现不同的操作);ConcreteStrategy 中存在不同的算法

优缺点

优点

使程序更加灵活,易于扩展
算法可以切换
避免多重判断

缺点

客户端必须知道所有的策略类,并自行决定使用哪一个策略类
策略类在不断的增加

代码

c++之策略模式
c++之策略模式
c++之策略模式
c++之策略模式
也可以定义构造函数来处理m