示例:
图9 表示BookTheResource 模式的一个实例,在一个录像带出租系统中,其中“Video(影片)”扮演“Resource(资源)”,“Video Booking(录像带预订)”扮演“Resource Booking(资源预订)”,“Branch(分店)”扮演“Source-party(来源)”,“Customer(顾客)”扮演“Destiny-Party”。
图9 ——BookTheResource 模式实例
变体:
预订与资源量化有关“QuantifyTheResource(3)”。例如,图书馆的情况,采用Resource Instance 模式,预订的是资源,但实际出租的是样本。但是,一些情况下,图8 中应将“Resource”替换为“Resource Instance”。 例如,在上面的录像带出租例子中,顾客可能希望预订原版带而不是翻译版本,这种情况下,最好不预订影片,而预订录像带本身,而录像带是资源实例。在这两个方案中进行选择非常重要。
相关模式:
“BookTheResource”是“Association-Object”[Boy 98]模式和“Time-Association”[Coa92]模式的特定应用。
它也是“Participant-Transaction”和“Specific Item-Transaction”[Coa97]的组合应用。
下一模式:
在决定了是否可以进行资源预订后,下一个是“RentTheResource(7)”。也可以看第3 节的模式,在对其它通用的事务细节建模时,它们非常有用。
模式5 ——QuoteTheTrade(交易询价)
上下文
应用系统处理资源交易,资源可能是组织买卖的商品。你已经确定、分类、量化了应用软件需要管理的资源。
买卖商品的过程是一个由付钱获得商品一方计划的活动。例如,组织经常在决定是否交易前询问商品的价格。
问题:
在成交前如何保存资源询价的过程?
约束:
保存询价信息对处理买和卖同样重要。首先,制作比价图来支持决策;其次,提供给用户询价服务,系统可以跟踪没有成交的询价过程,提交给组织管理者以分析可能的竞争对手。
处理这些信息需要附加的空间和处理时间。
结论:
确定应用系统需要对资源销售或采购进行询价。
解决方案:
创建一个与“Resource(资源)”相关的“TradeQuotation(交易询价)”类表示询价的细节。同样创建与“BookTheResource(4)”相同的“Source-Party”和“Destiny-Party”。
略图:
图10 表示QuoteTheTrade 模式, 询价与一个来源方, 一个目的方和一个资源相关。使用
ItemizeTheResourceTransaction(11)模式实现一次询价过程中处理多个资源。TradeQuotation 属性包括:询价日期、询价有效期和价格本身。有将询价与交易关联的方法。图10 中还表示了通过来源获得询价、通过目的获得询价等方法,在“Resource”类中增加了一个通过资源获得询价的方法。
图10——QuoteTheTrade 模式示例