一、定义
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
二、类图
三、代码
class Duck {
public:
Duck();
~Duck();
void swim();
void display();
void quark();
void fly();
void setFlyBehavior();
void setQuarkBehavior();
protected:
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
};
Duck::Duck() {
}
Duck::~Duck() {
}
void Duck::swim() {
}
void Duck::display() {
}
void Duck::quark() {
quackBehavior.quack();
}
void Duck::fly() {
flyBehavior.fly();
}
void Duck::setFlyBehavior(FlyBehavior fb) {
flyBehavior = fb;
}
void Duck::setQuarkBehavior(QuackBehavior qb) {
quackBehavior = qb;
}
class MallarDuck : public Duck {
public:
MallarDuck() {
flyBehavior = new FlyWithWings();
quackBehavior = new Quack();
}
~MallarDuck() {
}
void display() {
printf("i am MallarDuck");
}
};
参考文献:
1、head-first设计模式