示例:
图13 表示了QuoteTheMaintenance 模式的一个实例,在汽车修理店系统中,其中“Vehicle”扮演“Resource”,“Repair Quotation”扮演“Maintenance Quotation”,“Repair shop branch”扮演“Source-party”,“Customer”扮演“Destiny-Party”。
图13——QuoteTheMaintenance 模式实例
相关模式:
QuoteTheMaintenance 是“Association-Object”模式[Boy98],和“Time-Association”模式[Coa 92]的特例。它也是“Participant-Transaction”和“Specific Item-Transaction”[Coa97]的组合应用。
下一模式:
维护询价完成后就是维护资源MaintainTheResource(8),也可以看第3 节的模式,在对其它通用的事务细节建模时,它们非常有用。
模式7 ——RentTheResource(资源出租)
上下文:
你的应用软件处理资源出租,该资源可以是借给顾客一段时间的物品,也可以是由专家进行服务的一段时间。你已确定出租前是否允许预订。
问题:
应用程序如何管理资源出租?
约束:
出租资源过程包含了很多细节信息。保存这些信息对出租资源管理非常重要。
出租情况的历史信息可以帮助管理者预计哪些资源值得投资。
必须特别注意,需要采用好的系统功能弥补附加的存储空间和处理时间。
结论:
确定应用系统是否允许资源出租。
解决方案:
创建与“Resource”类关联的“Resource Rental”类表示所有与出租相关的细节如日期、阶段、费用等。
略图:
图14 显示了RentTheResource 模式, 出租与一个来源方, 一个目的方和一个资源相关。使用
ItemizeTheResourceTransaction(11)模式实现一次出租过程中处理多个资源。如果你采用“BookTheResource”模式(4),就要将“Resource Rental”类与“Resource Booking”类以“0..1 to 0..1”关系相连接,因为预订的结果可能出租也可能不出租,出租的物品可能经过预订,也可能不经过预订。这种情况下,不需要将“Source Party”和“Destiny-party”与“Resource Rental”连接,因为这种关系与预订相关的关系相同。如果你没有采用模式(4),也就是说,你的应用软件不需要预订功能,就要创建“Source Party”和“Destiny-party”与“Resource Rental”连接分别用来表示组织分支与顾客。资源出租有共同的属性:开始日期与结束日期,顾客支付的租费。还有一些通用的方法:出租资源,归还资源(当顾客交回资源时)和计算收入(例如每月计算)。图14 中还显示了通过来源获得出租情况、通过目的获得出租情况等方法。
图14——RentTheResource 模式