下面提到了4个课程 -
现在关于上述类的情况如下:
这是一个糟糕的设计吗?如果是的话,如何改进这种设计?
答案 0 :(得分:0)
这取决于案例,但在大多数情况下,你应该避免这种设计。
我们需要有关类之间关系的更多信息。我想,你可以通过使用观察者模式或使用return语句来解决这种情况。
示例:强>
A contains B, C, D => in that case, B, C and D should not know each other
A contains B
B contains C
C contains D
D should not know A or B. In most cases D should not even know C.
MVC模式: 模型包含原始数据,不需要调用View或Controller的功能。如果需要观察模型的变化,请使用obersver模式(事件监听器)。
View知道如何显示数据,并且在大多数情况下,它使用观察者模式在模型更改时得到通知。
每个Controller都知道他的View和can call方法。 Controller也知道模型并可以更改数据。
M不包含对V和C的直接引用 V可以是M的观察者,并且V知道C是可能的 C可以调用M和V的方法,大多数情况下V调用C而C调用M.
答案 1 :(得分:0)
根据jaco0646在评论部分中分享的链接,我得到了以下解决方案。如果有人有不同的想法,请分享。
这种循环关系需要持续的意识。大多数循环依赖项可以通过这种方式重构:
1)在上面的场景中,我们有A和D类相互依赖,选择任何类,
2)确定A和D所依赖的该类中的方法,即在这种情况下方法f2()
3)将这些方法提取到新的E类中,
4)使A和D都依赖于E,
5)A类和E类之一仍然依赖于另一类,但循环依赖性将被消除。