我有一个基类,它存储了数据库记录的所有列。我希望有三个子类,它们使用Run()方法将该记录的不同字段发送到不同的接收方。
但是,子类继承了未使用的变量(在本例中是数据库记录的字段)的问题。
我只想在基类中使用公共字段,并将其他字段存储在子类中。
那么如何使用基类指针设置子类的成员变量呢?Child1
、Child2
、Child3
类都不使用所有字段(field1
、field2
、...)。如果将每个子类想要的字段转移到自己的类中,那么我该如何使用来自父类的SetFields来设置不同子类中的不同字段?
class Interface
{
public:
int field1, field2, field3, ..., fieldN;
void SetFields(field1,field2,field3,fieldN); // --\> gets all the fields as arguments
virtual void Run() = 0;
};
class Child1 : public Interface
{
public:
void Run() {
/// send field1, field2, field3 to recepient1
}
};
class Child2: public Interface
{
public:
void Run() {
/// send field4, field5, field6 to recepient2
}
};
class Child3: public Interface
{
public:
void Run() {
/// send field7, field8, fieldN to recepient3
}
};
字符串
我需要一个设计模式,可以发送使用父类的子成员。
1条答案
按热度按时间sxissh061#
要求
我只想在基类中使用公共字段,而将其他字段存储在子类中。
1.类必须存储公共字段。->建议的类名为
Common
,而不是Interface
类Child 1、Child 2、Child 3都不使用所有字段(field 1、field 2、...)。
1.其他类存储不常用的字段。->建议的类名为
Additional<n>
,而不是Child<n>
我希望有三个子类,它们使用Run()方法将该记录的不同字段发送给不同的接收者。
1.附加类(
Additional<n>
)发送专用字段。设计
如果我正确地理解了需求,那么我看不出需要继承、接口类、基类等。
我建议改用聚合。
C++程式码
字符串
提示