我想通过选择一种从给定集合中调用的方法来配置对象在运行时的行为。考虑这个简单的例子:
class Parameter;
class Conf;
class Obj {
public:
Obj( const Conf &t ): t_( t ) {}
void f( Parameter *d );
void f1( Parameter *d );
void f2( Parameter *d );
typedef void ( Obj::*Fn )( Parameter *d );
private:
const Conf &t_;
};
class Conf {
public:
Obj::Fn f;
};
void Obj::f( Parameter *d ) {
( this->*t_.f )( d );
}
通过Conf::f
对给定对象进行更改,所有使用此配置Conf
的对象的行为都会更改。Obj
第一个问题:这是否类似于某种设计模式(好吧,它是一种方法-指针-策略...)?如果是这样,我应该考虑重新设计吗?
第二个问题:我想通过使用不同的参数类来使其更加灵活。我已经通过创建Parameter
一个基类并在fN
方法中进行类型转换来做到这一点,但这看起来不像是最终解决方案。有什么建议么?