假设我在c++中有一个这样的类:
class MyClass
{
public:
int MyMethod1 (/*Some Cool Args*/)
{
//do something
}
int MyMethod2 (/*More Args*/)
{
//do something
}
.
.
.
int MyMethodN (/*More Args*/)
{
//do something
}
}
现在,假设根据对象在运行时的状态,我需要使用MyMethode1,MyMethode2,...或MyMethodeN,它们基本上都是一样的,但是它们基于对象在运行时的状态改变了它们的方式。
- 我的问题是 *:有没有一种方法可以让...
class MyClass
{
public:
int MyMethod (/*Some Cool Args*/)
{
//do something in consideration to the current object state
}
}
基本上我的意思是,如果一个多态行为可以在同一个类中实现,而不需要调用派生对象或使用指向成员方法的指针,也不需要一个if序列或开关
1条答案
按热度按时间u5rb5r591#
我认为你描述的情况不是一个很好的多态性的情况。我认为你应该考虑使用组合沿着策略模式。
这个概念是将一些工作或算法封装在一个函数或可调用对象中,您有几个函数或可调用对象,然后根据父状态选择使用哪一个。你可以在std::function中保存一个指向指针或可调用对象(functor)的引用,它可以是父类的成员。
或者,更简单地说,如果系统不需要这样的复杂性,你可以有成员函数,其中包含解析新输入的每个方法,并选择哪一个与if语句一起使用。