【发布时间】:2015-05-15 21:48:16
【问题描述】:
我正在讨论在 C++ 中实现策略模式的最佳方式。到目前为止,我一直使用标准方式,其中上下文有一个指向基本策略类的指针,如下所示:
class AbstractStrategy{
public:
virtual void exec() = 0;
}
class ConcreteStrategyA{
public:
void exec();
}
class ConcreteStrategyB{
public:
void exec();
}
class Context{
public:
Context(AbstractStrategy* strategy):strategy_(strategy){}
~Context(){
delete strategy;
}
void run(){
strategy->exec();
}
private:
AbstractStrategy* strategy_;
由于指向对象的指针会导致不良行为,因此我一直在寻找一种更安全的方法来实现此模式,我发现this question 其中std::function 被提议作为处理此模式的更好方法。
有人可以更好地解释std::function 的工作原理吗,也许可以举个策略模式的例子?
【问题讨论】:
标签: c++ pointers c++11 strategy-pattern std-function