似たような質問が既にあると言う前に、はい、知っています、読んだことがあります。しかし、そこでの質問はいつに焦点を当てているので、私はその理由に興味があります。
私は物事がどのように機能するかを理解しています。古典的な動物、犬、猫の例は常に魅力的です。
問題はこのコードです
int main()
{
Cat c;
Sound theSound;
c.letsDo(&theSound);
}
私にはとても不自然に思えます。なんで?
つまり、そうです、この方法で犬と猫のモデルを区別しません(英語でその単語を初めて使用します)。実際の実装は Sound クラスの下に隠されていますが、それは単にコードを重くする方法ではないからです。 ? このようなことを行うにはポリモーフィズムで十分ではありませんか?
私にとっての違いは、ポリモーフィズムでは各クラスを編集する必要があることです (ただし、モデルは同じままですよね?)。一方、ビジター デザイン パターンでは 1 つのクラスを編集するだけで済みます。