相关模式:
ItemizeTheResourceTransaction 模式是“Behavior across a Collection”模式,和“State across a collection”模式[Coa 92]的特例。如果你考虑类“Resource Transaction”和“Transaction Item”(本模式),这里有“Transaction LineItem”模式[Coa 97]的一个应用。如果你考虑类“Transaction Item”和“Resource”,这里有“Item-Line Item”模式[Coa97]的一个应用。
下一模式:
下一步考虑是否采用“PayForTheResourceTransaction”(12)和IdentifyTheTransactionExecutor(13)。
模式12 ——PayForTheResourceTransaction(资源事务支付)
上下文
应用系统管理资源而你已经采用了第2 节中的一个或多个模式。许多资源交易有多种支付方式。例如,租房子,购买冰箱或者修汽车,顾客要付一大笔钱。如果一时拿不出全款,一些应用系统提供分期付款。其结果是管理更加复杂,要引入对收入和分期付款的控制。
问题:
如何控制与资源交易相关的付款?
约束:
只在“Resource Transaction”类中加入一些属性来控制付款往往是不够的,对收入与分期付款进行好的管理需要更精确的信息。
保存顾客的历史数据对组织确定顾客的信用起更好的支持作用。
对每笔分期付款独立处理将增加系统的难度。这种情况必须考虑,例如,所有的顾客支付现金。
结论:
确定资源事务可以采用分期付款。
解决方案:
如果一次付款,只要在“Resource Transaction”类中添加“付款日期”和“金额”就可以了。否则,就要创建一个与“Resource Transaction”类相关的“Payment”类跟踪每一笔付款。
略图:
图24 表示了PayForTheResourceTransaction 模式。方法“确定支付方式”添加到“Resource Transaction”中,确定顾客希望分几期付款以及相应的利息。“Payment”类中包括属性“开始日期”、“付款日”、“分期序号”、“金额”和“状态”。最后一个属性控制分期付款的可能状态,例如,已经付清、拖期等。方法“Coming installments”列出了将要分期付款的日期。方法“Overdue Payment”列出了所有拖期的付款。方法“Register Payment”负责完成客户的付款。方法“Payment done”列出在一定时期内所有的付款。
图24——PayForTheResourceTransaction 模式