本项目将使用对象池模式来实现设备租用功能。在实验课程中,学生可能需要租用实验设备来完成实验。在图书馆或者机房,学生可能可以借用电脑,完成资料查询或者上机完成作业。这些设备是有数量限制的,而且这些设备都保存着各自独立的状态数据。例如,图书馆可能只能同时提供20台笔记本电脑,供学生使用。每台笔记本电脑都有唯一的id标识。每台笔记本电脑都设置了不同的用户名和密码等信息。
因此,为了实现上述功能,我们将在本项目中使用对象共享池模式,来跟踪每一个设备的租借情况。
首先,我们在com.littlewaterdrop.sharing包中创建一个新的接口DevicePool;它包含两个成员方法borrowDevice()和returnDevice(),用于实现设备的"借"与"还"。borrowDevice()方法无输入参数,返回一个Device类型的对象。returnDevice()方法接收一个Device类型的对象,无返回值。
public interface DevidePool {
Device borrowDevice();
void returnDevice(Device device);
}
然后,我们在com.littlewaterdrop.sharing包中创建一个新接口Device。这是一个Marker Interface;不包含任何成员方法。
我们再在com.littlewaterdrop.sharing包中创建一个新类LaptopPool;用于表示和维护多个笔记本电脑设备。LaptopPool实现了DevicePool接口。在LaptopPool对象中维护着一组LaptopDevice对象。
public class LaptopPool implements DevicePool {
...
}
我们再在com.littlewaterdrop.sharing包中创建一个新类Laptop,实现了Device接口。在Laptop类中包含了三个成员变量username、password和batteryLife,用于跟踪笔记本电脑的用户名、密码和电池寿命。username和password为字符串类型;batteryLife为整数类型。我们假设笔记本电脑每借出1000次之后,需要更换电池。
public class Laptop implements Device {
...
}
我们将在StudentCenter中设置一个LaptopPool类型的成员变量,并且创建两个新的成员函数borrowLaptop()和returnLaptop(),用于实现学生租用和归还笔记本电脑。初始时,这个LaptopPool保存着20个Laptop对象。
public class StudentCenter {
Laptop borrowLaptop();
void returnLaptop(Laptop laptop);
}