我经常遇到类似这样的场景:
对层次结构建模的容器业务类。
参与此层次结构并由上述类聚合的业务类。
让我给你举个例子。
AMap
有国家。现在Map
应该知道每个国家在哪里Country
,因为除了包含所有国家之外,它的主要职责是了解每个国家的位置和接近度。从这个角度来看,isNeighbour(Country A, Country B)
诸如此类的功能似乎是对Map
. 然而,每个国家也应该提供一种方法来知道一个国家是否在附近。说spain.isNeighbour(italy)
。这确实很有用。现在,如果我不想重复功能和责任,我应该采取什么方法?
我正在研究的当前示例是针对我的大学的,每门课程都需要其他课程,并且还会阻止下一级课程。专业是包含所有课程并规定哪一门课程先于哪一门课程的专业。假设我想增加一门课程对另一门课程的依赖,例如,要学习微积分 2,你需要微积分 1……我应该去calculus.addRequired(calculus2)
然后将它传递给主要对象,或者也许computerScience.addRequired(calculus1, calculus2)
……
我不想同时拥有这两种选择,因为对我来说这似乎会导致错误,但同时我希望每门课程都能够回答其要求。我真的不知道如何正确分配责任。