野生動物公園に関する次のコードがあります。
public class Bird
{
public void virtual Exercise()
{
some logic here
}
public void virtual Feed()
{
Exercise();
some logic here
}
}
public class Penguin : Bird
{
public void override Exercise()
{
base.Exercise();
some logic here
}
public void override Feed()
{
Exercise();
base.Feed();
some logic here
}
}
そのため、鳥にエサを与えるたびに、運動も行わなければなりません。ただし、鳥はエサを与えられなくても運動できます。
ペンギンは特別な種類の鳥で、鳥の運動と特定のペンギンの運動が必要です。ペンギンに餌をやるには、鳥の餌に加えて、いくつかの追加のペンギンの要件が必要です。
このコードの問題点は、Feed が呼び出されたときに鳥の運動が 2 回行われることです。ペンギンは本当に疲れます。
ペンギンが餌を与えられたときに、餌ごとに鳥とペンギンに対して1回だけ運動するようにコードを改善するにはどうすればよいですか?