Design patterns 设计模式以添加新类

Design patterns 设计模式以添加新类,design-patterns,Design Patterns,我有两个班,学生和老师,学生有一个具体的方法:上课;教师有一个具体的方法:讲授课程 现在我想增加一个新的班级,研究生,它可以像学生一样选修课程,也可以像老师一样授课。哪种模式是实现这个新类最简单的方法?适配器、复合、委托 谢谢。问题应该是什么是建模的最佳方式,答案应该是“在现实世界中有意义的方式”,即研究生也可以授课和上课;-) 不要试图将所有内容都与设计模式联系起来。坚持我们在学校学到的基本原则“班级模拟真实世界的物体”,“保持模型接近真实世界” 我是这样做的。是这样吗?班级研究生{学生;教师

我有两个班,学生和老师,学生有一个具体的方法:上课;教师有一个具体的方法:讲授课程

现在我想增加一个新的班级,研究生,它可以像学生一样选修课程,也可以像老师一样授课。哪种模式是实现这个新类最简单的方法?适配器、复合、委托


谢谢。

问题应该是什么是建模的最佳方式,答案应该是“在现实世界中有意义的方式”,即研究生也可以授课和上课;-)

不要试图将所有内容都与设计模式联系起来。坚持我们在学校学到的基本原则“班级模拟真实世界的物体”,“保持模型接近真实世界”


我是这样做的。是这样吗?班级研究生{学生;教师教师;公共无效takeCourse(){Student.takeCourse();}…}任何研究生都不应该从Student扩展。仔细看我的代码你的解决方案有问题,它必须重写教学逻辑。它不能使用老师定义的现有逻辑。这是我可以接受的保持事物真实性的权衡。实现继承不好。您可以重新定义逻辑,也可以创建一个类“BasicTeachable implements CanTeach”,然后将教师和研究生中的teachCourse()方法委托给BasicTeachable.teachCourse()。您选择的选择是由您的业务环境决定的主观选择。
interface CanTeach
{
void teachCource();
}

class Teacher implements CanTeach {...}

class Student 
{
void takeCourse(...);
}

class GradStudent extends Student implements CanTeach
{
...
}