策略模式(strategy):它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
策略模式的结构图:
Strategy:策略类,定义所有支持的算法的公共接口。
ConcreteStrategy:具体策略类,封装了具体的算法或行为,继承于Strategy。
Context:上线文类,用一个Strategy来配置,维护一个对Strategy对象的引用。
具体例子:商场促销策略的设计
具体代码如下:
/*
*策略模式
*/
#include<iostream>
#include<string>
using namespace std;
//CashSuper抽象类
class CashSuper
{
public:
virtual double acceptCash(double money) = 0;//收钱的纯虚函数
};
//CashNormal正常收费类
class CashNormal :public CashSuper
{
public:
double acceptCash(double money)
{
return money;
}
};
//CashRebate打折类
class CashRebate :public CashSuper