示例:
图11 表示了QuoteTheTrade 模式的一个实例,在存货控制系统中,其中“Product”扮演“Resource”,“PurchaseQuotation”扮演“Trade Quotation”,“Supplier”扮演“Source-party”,“Store-branch”扮演“Destiny-Party”。
图11——QuoteTheTrade 模式实例
变体:
根据量化模式的不同,“Resource”类可能被“Resource Instance”类替换。例如,如果资源的不同实例的价格不同,询价也不同。
相关模式:
QuoteTheResource 是“Association-Object”模式[Boy98],和“Time-Association”模式[Coa 92]的特例。它也是“Participant-Transaction”和“Specific Item-Transaction”[Coa97]的组合应用。
下一模式:
询价后要进行的就是交易,TradeTheResource(8)。也可以看第3 节的模式,在对其它通用的事务细节建模时,它们非常有用。
模式6 ——QuoteTheMaintenance(维护询价)
上下文
应用系统处理资源的维护和修理。你已经确定、分类、量化了应用软件需要管理的资源。在这种情况下,资源基本上是用户的一个物品发生故障或需要定期维护。为了重新使用,它必须经过修理。或是为了防止发生故障在一定时期内必须进行维护。例如,汽车、电视、电子应用产品和计算机是在生命周期中经常发生故障的资源。
许多顾客在修理前要做一下费用估算,因为如果修理费用与其本身价值相比的比率较高,修理就不值得了。
问题:
如何记录顾客针对维护的询价过程?
约束:
有时询价信息不重要,除非询价后有维修工作。在这种情况下,询价属性可以与维护属性放在一起。例如,在你把电视机送去修理之前,你会询问修理价格来决定是否修理。电视修理店可能想也可能不想记录一个没有修理的询价。
但是如果你去汽车修理店询价,你可能会付费,回答问题的工作人员会得到报酬。因此汽车修理系统需要记录询价过程,即使没有修理发生。
处理这些信息需要附加的空间和处理时间。
结论:
确定应用系统在实际维护前需要询价。
解决方案:
创建一个与“Resource”相关的“MaintenanceQuotation”类表示询价的细节。同样创建与“BookTheResource(4)”相同的“Source-Party”和“Destiny-Party”。
略图:
图12 表示QuoteTheMaintenance 模式, 询价与一个来源方, 一个目的方和一个资源相关。使用
ItemizeTheResourceTransaction(11)模式实现一次询价过程中处理多个资源。
QuoteTheMaintenance 包括许多公用属性:询价日期、询价有效期和价格本身。还有公共的方法:询价和与维护关联(如果询价有效)。图12 中还表示了通过来源获得询价、通过目的获得询价等方法,在“Resource”类中增加了一个通过资源获得询价的方法。
图12——QuoteTheMaintenance 模式