たとえば、仮想メソッドを持つ抽象クラスがあります
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()
) は、設計に問題があると感じさせます。それに適したデザインはありますか?