ウィキペディアから:
クラスの実装は、一度完了すると、エラーを修正するためだけに変更できるという考えでした。新しい機能または変更された機能では、別のクラスを作成する必要があります。そのクラスは、継承によって元のクラスのコーディングを再利用できます
私が理解していることから、Visitor パターンは、同じインターフェイスを実装する類似しているが異なるオブジェクトをダブルディスパッチを使用してトラバースするための強力な手法です。私の Java の例の 1 つで、ツリー構造を形成するオブジェクトの複合セットを作成し、それらのオブジェクトのそれぞれの特定の実装が、訪問可能なインターフェースを実装しています。ビジター インターフェイスには、訪問可能なオブジェクトごとにメソッドがあり、具体的なビジターは、これらのケースごとに何をすべきかを実装します。
私が理解しようとしているのは、visitable も実装する複合構造に新しい実装を追加する場合、ビジター インターフェイスを再度開いてそのケースを追加する必要があるという事実です。ビジターの各実装を変更します。
とにかくこれを行う必要があるため (ビジターがビジターブルを理解できない場合、ビジターブルに追加するメリットはありますか?)、これは問題ありませんが、学術レベルでは、これはオープン クローズドの原則に違反していませんか? とにかく、それがデザイン パターンの主な理由の 1 つではありませんか? すべての switch ステートメントを終了するために switch ステートメントを維持する代わりに、このパターンに切り替える適切な理由を示そうとしていますが、switch ブロックの代わりに各ケースのメソッドを使用して、とにかくコードは同じであると誰もが主張しています。そして読みにくい。