是否存在一种面向对象模式来用大量数据填充对象,而这些数据在每个对象内通常都是多态的? [编辑]这里的问题是,在代码的另一部分中,我将有一个指向基类的指针,并且我想填充此基类所指向的具体对象的数据。
示例:
public Filler
{
virtual void fill_struct1(struct myStruct1) = 0;
virtual void fill_struct2(struct myStruct2) = 0;
// I will need more methods to give the derivate objects the capacity of
// filling its data members polymorphically.
}
class A: public Filler
{
void fill_struct1(struct myStruct1);
void fill_struct2(struct myStruct2);
// There can be more overwritten methods.
struct myStruct1 member_1;
struct myStruct2 member_2;
struct myStruct3 member_3;
// There can be more members of different types.
}
class B: public Filler
{
void fill_struct1(struct myStruct1);
void fill_struct2(struct myStruct2);
void fill_struct4(struct myStruct4);
// There can be more overwritten methods.
struct myStruct1 member_1;
struct myStruct2 member_2;
struct myStruct4 member_3;
// There can be more members of different types. But sometimes the members can be equal one used in a sibling.
}
答案 0 :(得分:1)
一种克服冗余的方法是使用模板方法:
template<class T>
void fill_struct1(T& obj)
{
obj.member_1 = ...;
}
可以在具有member_1
(类型为myStruct1
的任何对象)上调用此方法。如果您所有的fill_struct1
方法都做完全相同的事情,那么可能值得研究。
答案 1 :(得分:1)
尝试在此处分离问题:
A
或相关类的实例应在构造函数中完成。如果要传递给构造函数的参数太多,则将它们分组在结构中。另一个问题与第一点很正交: