gpt4 book ai didi

c++ - 策略模式是否允许状态?

转载 作者:行者123 更新时间:2023-11-28 02:52:22 24 4
gpt4 key购买 nike

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

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;
};

策略模式是否允许状态?如果没有,缺点是什么?

最佳答案

当然你可以使用状态。设计模式只是人们交流特定设计思想的约定。它不会试图限制你。

在这种情况下,策略模式是一种抽象出不同执行方式的方法,以便用户可以在运行时决定他们想要如何执行。并且你已经使用多态来实现它。 “状态”只是程序设计的另一部分,与模式无关。您需要考虑从程序的角度来看这是否好,而不是它是否是一种模式。

即使有某种设计干扰了策略模式等等,使其不属于策略模式,只要符合您的设计目标就可以了。

关于c++ - 策略模式是否允许状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22752885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com