パスファインディングの例を紹介します。パスを見つけたいときは、最終目的地、初期位置を選択して2つの間の最速の道を見つけるか、最初の位置を定義して、アルゴリズムに終了できるすべてのパスを表示させることができます。テストのためにこれをモックして、最終目的地を言って、そこに「テレポート」すると仮定します。機能が同じであることは明らかです:パスを見つけること。ただし、引数は実装によって異なる場合があります。私はたくさん検索し、たくさんの解決策を見つけました:インターフェースを取り除く、実装のフィールドとしてすべての引数を置く、ビジターパターンを使用する...
しかし、すべての可能な引数(状態ではない)を1つのオブジェクト(MovePreferencesと呼びましょう)に入れ、すべての実装に必要なものを取り入れさせることの欠点は何ですか?確かに、予期しない引数を取る別の実装が必要な場合は、MovePreferencesを変更する必要がありますが、メソッドを追加するだけで、既存のメソッドをリファクタリングしないので、それほど悪くはありません。このMovePreferencesは私のドメインのオブジェクトではありませんが、それでもやりたくなります。どう思いますか?
(この問題に対するより良い解決策がある場合は、自由に回答に追加してください。)