本项目主要目的是练习如何使用接口来提供服务。在之前的项目中,我们使用了StudentCenter类来管理学生对象和课程对象。在本项目中,我们将在StudentCenter类中新增一个功能,记录学生注册课程信息。换句话说,当一名学生注册了一门课程之后,需要将这一条注册信息记录在StudentCenter类中。
在本项目的第一个步骤中,我们将声明三个接口,用于表示注册人(Registrant)、可注册对象(Registerable)和注册机构(Registry)。
首先,在com.littlewaterdrop.registration包中新增两个接口Registrant和Registerable。这两个接口均为公有接口;它们包含一个成员方法getId(),用于获取当前对象的唯一id。该方法的原型如下所示。
String getId();
然后,在com.littlewaterdrop.registration包中新增一个公有接口Registry。该接口有一个成员方法,完成注册的功能。该方法的原型如下所示,它有两个输入参数;第一个参数是Registrant,表示注册人;第二个参数为Registerable,表示注册对象。
void register(Registrant registrant, Registerable registrable);
在定义了上述三个新接口之后,我们再来实现这些接口。首先,修改com.littlewaterdrop.bean.Student类,让其实现Registrant接口。然后,修改com.littlewaterdrop.bean.Course类,让其实现Registerable接口。最后,修改com.littlewaterdrop.registration.StudentCenter类,让其实现Registry接口,并新增register()成员方法。
在StudentCenter中新增两个Map私有成员变量,用于实现学生和课程之间的双向映射。
register()方法的功能为:当输入学生已经注册了输入的课程时,register()方法不用做任何事情。当输入的学生未注册输入的课程时,register()方法会向上述两个成员变量中添加新记录。