例如,我有一个带有虚拟方法的抽象类
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()
)让我觉得设计有一些问题。有什么好的设计吗?