C++ 战略模式允许国家吗?

C++ 战略模式允许国家吗?,c++,design-patterns,C++,Design Patterns,我所看到的所有策略模式的引用都表明,具体模式没有状态(成员数据)。但我不知道它是否有,它有时可能有用,例如: class bark_strategy { public: virtual void execute() = 0; }; class bowwow : public bark_strategy { public: bowwow(unsigned int t) : m_tired(t), m_count(0) {} virtual void execute() o

我所看到的所有策略模式的引用都表明,具体模式没有状态(成员数据)。但我不知道它是否有,它有时可能有用,例如:

class bark_strategy {
public:
    virtual void execute() = 0;
};

class bowwow : public bark_strategy {
public:
    bowwow(unsigned int t) : m_tired(t), m_count(0) {}
    virtual void execute() override
    {
        if (m_count < m_tired)
        {
            ++m_count;
            std::cout << "bowwowwowwowwowwowwow..." << std::endl;
        }
        else
        {
            std::cout << "bow..." << std::endl;
        }
    }

private:
    unsigned int m_tired;
    unsigned int m_count;   
};
class-bark\u策略{
公众:
虚空执行()=0;
};
bowwow类:公共树皮策略{
公众:
bowwow(unsigned int t):m_疲倦(t),m_计数(0){}
虚拟void execute()重写
{
如果(m_计数当然你可以使用状态。设计模式只是人们交流特定设计思想的惯例。它并不试图限制你

在这种情况下,strategy模式是一种抽象出不同执行方式的方法,这样用户可以在运行时决定他们想要执行的方式。您已经使用多态性来实现它只是程序设计的另一个部分,它与模式无关,你需要从程序的角度考虑它是否好,而不是它是否是一个模式。 即使有一些设计干扰了策略模式,这使得它不是一个策略模式,只要它符合您的设计目标,它仍然是好的