解决方案:
创建一个与“Resource”类相关的“Resource Delivery”类来控制资源交付的确认过程。因为交货是与交易相关的,“Resource”类与“Resource Delivery”类是“1 to 1”关系。如果你采用了子模式“Resource Measurement”或者采用了“ItemizeTheResourceTransaction”模式,这种关系会发生变化。
略图:
图20 表示了CheckResourceDelivery 模式。一次交货必然与一次交易相关,一次交易后必然有一次交货。使用ItemizeTheResourceTransaction(11)模式实现一次交易过程中处理多个资源。除了“Resource Delivery”中进行交货和取消交货方法外,根据资源获得交货方法被添加到“Resource”类中,将交易与交货相关的方法在“ResourceTrade”类中,根据来源获得交货与根据目的获得交货应该放置在“Source-Party”和“Destiny-Party”中。
图20——CheckResourceDelivery 模式
示例:
图21 表示了CheckResourceDelivery 模式的一个实例,其中“Produc(t 产品)”扮演“Resourc(e 资源)”,“Delivery(交付)”扮演“Resource Delivery(资源交付)”,“Purchase(购买)”扮演“Resource Trade(资源交易)”。
图21——CheckResourceDelivery 模式实例
相关模式:
CheckResourceDelivery 模式是“Association-Object”模式[Boy98],和“Time-Association”模式[Coa 92]的特例。它也是“Participant-Transaction”和“Specific Item-Transaction”[Coa97]的组合应用。如果你考虑类“ResourceTrade”(模式8)和“Resource Delivery”(本模式),这里有“Transaction-Subsequent Transaction”模式[Coa 97]的一个应用。
下一模式:
第3 节的模式,利用它们详细说明其它细节。