深入理解C++之策略模式

2020-01-06 15:27:32丽君

除了在构造函数中初始化 _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++教程频道。