方法应该在X级还是Y级?

时间:2016-12-01 20:46:18

标签: oop

这是一个基于意见的问题,因此很可能会被删除。

我们说我有班级match()和班级Teacher。我想创建方法Course,它将接收GetCourseId(TeacherId)作为输入参数,并返回TeacherId

此方法应该在课程CourseId还是课程Teacher

我想我的问题是,如果有一种方法可以归入任何类别的课程,它最终应该去哪里?对此有一些不言而喻的规则吗?

感谢。

3 个答案:

答案 0 :(得分:1)

我经常看到为处理类似这样的事情而创建的第三个类,其中一个方法需要知道2个类,并且它不会完全适合这两个类。

在这种情况下,创建的CourseManager可能包含GetCourseIdGetCourseByTeachersAddCourse和其他&#39等方法;管理'任务。

其中许多可以作为各种包装 - CourseManager.AddCourse可能会在Course构造函数上完成大量工作。

答案 1 :(得分:0)

通常我将 教师 课程 等类定义为只包含字段,getters / setters的java bean以及一些直接使用这些字段并且不包含任何业务逻辑的非常基本的方法。

根据我的应用程序支持的功能/特性,我创建了业务/经理类,通过与其他java bean通信来实现我的业务。

因此,如果我为大学创建一个简单的课程注册申请,我会定义3个java bean: 教师 课程 学生 以及基于我希望在我的应用程序中支持的功能的一些管理器类,即在我们的案例中 < em> RegistrationManager ,它将包含以下方法: registerStudentInCourse() getStudentCourses(),addCourseTeacher() ..

请注意,我只是分享我的编码方式,人们可能会也可能不同意。

答案 2 :(得分:0)

最简单的解决方案是拥有像

这样的属性
private Course course 

private Set<Course> courses

基于Teacher类中的基数(OneToOne或OneToMany)。也许ManyToMany也取决于需求和数据建模。您可以使用getter / setter方法获取或设置分配给教师的课程。

除此之外,如果关系是双向,那么您可以在课程类中拥有类似的属性。在双向映射的情况下,您可以在registerCourse类中使用Teacher等实用程序方法来设置实体之间的正确关系。

public boolean registerCourse(Course course){
    this.course = course;
    course.setTeacher(this);
}

您也可以在课程类中使用这种实用方法。