私は繰り返しこれに似たシナリオに遭遇します:
階層をモデル化するコンテナビジネスクラス。
この階層に参加し、前述のクラスによって集約されるビジネスクラス。
例を挙げましょう。
AMap
には国があります。すべての国を含むことに加えて、その主な責任はそれぞれの場所と近接性を知ることであるため、ここでそれぞれがどこMap
にあるかを知る必要があります。Country
この観点から、などの機能は。isNeighbour(Country A, Country B)
への正しい追加のように見えますMap
。ただし、各国は、国が近くにあるかどうかを知る方法も提供する必要があります。言うspain.isNeighbour(italy)
。これは確かに便利です。さて、機能と責任を複製したくない場合、どのようなアプローチを取るべきですか?
私が取り組んでいる現在の例は私の大学のためのものであり、各コースには他のコースが必要であり、次のレベルのコースもブロックします。メジャーは、すべてのコースを含み、どのコースがどのコースに先行するかを指示するものです。あるコースの依存関係を別のコースに追加したいとします。たとえば、Calculus 2を取得するには、Calculus 1が必要です...行っcalculus.addRequired(calculus2)
てから、それを主要なオブジェクトに渡す必要がありcomputerScience.addRequired(calculus1, calculus2)
ます。
エラーにつながる可能性があるため、両方の選択肢は必要ありませんが、同時に、各コースがその要件に答えられるようにしたいと思います。責任を正しく分配する方法がよくわかりません。