除了在构造函数中初始化 _pfB 外,还可在 Duck 类中,定义一个 setFlyBehavior 成员函数,动态的设置“飞行方式”
void Duck::setFlyBehavior(std::shared_ptr<FlyBehavior> pflyBehavior)
{
_pfB = pflyBehavior;
}
最后,main 函数如下:
void main()
{
shared_ptr<FlyBehavior> pfWings = make_shared<FlyWithWings>();
shared_ptr<FlyBehavior> pfRocket = make_shared<FlyWithRocket>();
// fly with wings
shared_ptr<Duck> pDuck = make_shared<MallardDuck>(pfWings);
pDuck->performFly();
// fly with a rocket
pDuck->setFlyBehavior(pfRocket);
pDuck->performFly();
}
小结:
1) 面向对象的三个设计原则:隔离变化,编程到接口,复合 > 继承
2) 策略模式主要涉及的是“一系列算法“,熟悉其适用的四种情景
参考资料:
<大话设计模式> 第二章
<Head First Design Patterns> chapter 1
<Effective C++> item 32, item 38
<Design Paterns> Strategy
<Refactoring> chapter 8
以上这篇深入理解C++之策略模式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持ASPKU。
注:相关教程知识阅读请移步到C++教程频道。










