例如,我有一个带有虚拟方法的抽象类
class A
{
public:
virtual void setColumn(int i, string s); // set column i to show string s
...
};
该类是由其他一些抽象类派生的,例如B和C。
我发现 A 的大多数对象都遵循规则:它有 2 列:名称和描述。为了避免重复代码(实际情况更复杂,所以我想避免重复),我添加了另外 2 个虚拟方法,因为具体类对和A有不同的实现。setName()setDescription()
class A
{
public:
virtual void setColumn(int i, string s)
{
if (i == 0)
return setName(s);
if (i == 1)
return setDescription(s);
}
virtual void setName(string s);
virtual void setDescription(string s);
...
};
因此,用户只需要重新实现setName()并且setDescription()具体类是否遵循规则。如果没有,他们需要重新实现setColumn(). 但是,3 个虚拟(setName()和setDescription()实现setColumn())让我觉得设计有一些问题。有什么好的设计吗?