私はオブジェクトGameLogic
にPlayer
(インターフェイス)オブジェクトを持っています。カプセル化を破ることなく別のオブジェクトのメソッドを呼び出す
GameLogic
は、GameLogic
の中で使用されて、利用可能な移動について知っている方法getAvailableMoves()
を持っています。
私は現在、戦略としてMinimaxアルゴリズムを使用するAIPlayer
(実装はPlayer
)を実装しています。そのためにはAIPlayer
のGameLogic
のgetAvailableMoves()
メソッドを使用できるようにしたいと考えています。しかし、私はカプセル化を破ることなくそれをしたいと思います。つまり、Player
への参照としてGameLogic
を渡すのを避けようとしています。
このシナリオにはどのような解決策がありますか?私はデザインパターンを使用すべきだと思っていますが、どちらが確実かはわかりません。
あなたは、サービスクラスが必要になります。 – SynchroDynamic