いくつかのコードを書き直して、いくつかの結合の問題を解決し、将来の変更を容易にしようとしています。
現在、状況に応じて適切な実装を選択する基本クラスに静的ファクトリ メソッドがあります。決定は、専門の程度に基づいています。
タイプ A と B はどちらもこれを処理できますが、B はこの状況のために特別に設計されており、正しい選択です。
したがって、基本クラスはすべての実装と密接に結合されており、このメソッドは、新しい特殊な実装が作成されたときに書き直す必要があります。
Chain of Responsibilityパターンを使用して、この結合を断ち切ることを考えています。ただし、最も適切な実装が確実に実行されるようにする方法がわかりません。この決定を実装に委ねると、同じ結合の問題が発生せずに特殊化の順序でクエリが実行されることを保証できません。
このような状況を処理するためのパターンや方法はありますか? (私の最善の推測では、展開を妨げるでしょう。誰もが「そうです、それがそれを行う唯一の方法です!」と言わないように、私はそれを後ろのポケットに入れておきます。)