示例:
图25 描述了PayForTheResourceTransaction 的一个实例。其中,“Sale”扮演“Resource Transaction”,“Accounts Receivable”扮演“Payment”。
图25——PayForTheResourceTransaction 模式实例
相关模式:
PayForTheResourceTransaction 是“Transaction-Subsequent transaction”模式的一个特例。
下一模式:
下一个可能的模式是IdentifyTheTransactionExecutor(13)模式13 ——IdentifyTheTransactionExecutor(识别事务执行者)
上下文
应用系统管理资源,而你已经采用了第2 节中的一个或多个模式。许多资源交易有多种支付方式。对于实际系统,知道是谁完成的事务非常有用。例如,在一个计算机商店,销售人员卖出计算机并且按照每周或每月获得佣金。因此,为了提供佣金报表,系统需要这些信息。
问题:
如何识别事务的执行者?
约束:
在“Resource Transaction”类中加入“执行者”属性对于仅关心执行者姓名的小系统来说是一个好方案。但是在一些系统中,“执行者”具有管理所必须的其它属性,例如,固定的薪水,特殊佣金比例,最小销售额等。
只有当应用系统需要时,才值得将每个执行者信息分开存放,因为这样会需要更多的存储空间和处理时间。
结论:
确定执行者对系统是否重要。
解决方案:
创建与“Resource Transaction”类(表1 中所示)相关联的“Transaction Executor”类,表示可能的事务负责人或团队。
略图:
图26 表示了IdentifyTheTransactionExecutor 模式,提供与特定事务相关佣金的方法被添加到“ResourceTransaction”类中。“Transaction Executor”类有属性代码、姓名、专业、佣金比例、最小销售额和薪水,还有通过执行者获得事务方法,和列出已付佣金方法。
图26——IdentifyTheTransactionExecutor 模式