Oop 利用构图解决问题

Oop 利用构图解决问题,oop,Oop,我的课程如下: public UIManager{ private UIInstructor uiInstructor; private MOdel model; } UIManager将其部分任务委托给UI讲师 我的问题是:如果UI讲师想要使用UIManager的一些实例变量(例如:模型对象),它是一个 良好的设计实践,让“UI讲师”店向UIManager推荐 或者我们是否需要改变设计,使“UI讲师”不“依赖”UIManager进行任何操作 在UI讲师中添加对UIman

我的课程如下:

public UIManager{

    private UIInstructor uiInstructor;
    private MOdel model;


}
UIManager将其部分任务委托给UI讲师

我的问题是:如果UI讲师想要使用UIManager的一些实例变量(例如:模型对象),它是一个 良好的设计实践,让“UI讲师”店向UIManager推荐


或者我们是否需要改变设计,使“UI讲师”不“依赖”UIManager进行任何操作

在UI讲师中添加对UImanager的引用将创建循环依赖关系,这是不好的

理想情况下,组成一个新类的字段不应该依赖于这个新类


因此,对设计进行更改,使“UI讲师”在其任何操作中都不“依赖”UIManager。

在这种情况下,尝试的第一个解决方案是让
UIManager
对象将对
模型的引用传递给
UI讲师
。一般来说,最好避免不需要的依赖关系,尤其是循环依赖关系

在减少依赖性的精神中,您可能想考虑<代码> uiRealthor 是否应该真正地看到所有的<代码>模型< /代码>。因此,您的

模型
类可能如下所示:

class Model
{
    private InstructorModel instructorModel;
    private StudentModel studentModel;
}
您可以想象,我们可能会添加到您的经理中,这样它也会显示一名学生

class UIManager{
    private UIInstructor uiInstructor;
    private UIStudent uiStudent;
    private Model model;
}
然后,
UIManager
通过
model.instructorModel
初始化
uiInstructor
,通常通过构造函数。并通过
model.studentModel
初始化
uiStudent

这些只是一些想法。做事情有很多不同的方法,但一个好的经验法则是安排每个类只“看到”它需要的东西