1. 简单工 厂模式与策略模式
- 简单工厂模式
就是将生产函数变成static函数并放置在类中,这个生产函数接收外部来的信息,根据信息加工生产得到具体的派生类,并将这个派生类的指针作为函数返回; - 简单工厂模式结合策略模式
不需要生产函数和生产类,而是设计一个context类,在这个类中封装整个产品的继承体系结构,所有对整个产品继承体系结构的操作都通过context类实现;
class CashSuper {
public:
virtual double getResult(double money) {
return -1;
}
};
class CashNormal :public CashSuper {
public:
virtual double getResult(double money) {
return money;
}
};
class CashRebate :public CashSuper {
public:
CashRebate(double r) :rebate(r) {}
virtual double getResult(double money) {
return money * rebate;
}
private:
double rebate;
};
enum cashType { NORMAL, REBATE };
class CashFactory {
public:
CashSuper * creatCash(cashType type) {
switch (type) {
case NORMAL:
return new CashNormal();
break;
case REBATE:
return new CashRebate(0.9);
break;
default:
return nullptr;
break;
}
}
};
class CashContext {
public:
CashContext(cashType type) {
switch (type) {
case NORMAL:
cs = new CashNormal();
break;
case REBATE:
cs = new CashRebate(0.9);
break;
default:
cs = nullptr;
break;
}
}
double getResult(double money) {
return cs->getResult(money);
}
private:
CashSuper *cs;
};