1

我创建了以下 UML。它基本上是一个货币转换器。就像现在一样,它是一个责任链。但现在我想添加一个装饰器模式。因此,例如,添加一个固定的处理量。如何在此处插入装饰器模式?谢谢您的帮助!

心肺复苏术

4

1 回答 1

1

责任链旨在为多个对象(WR专业化实例)提供处理请求的可能性,这里是操作umrechnen()装饰器旨在增加额外的责任,例如计算一些固定的交易费用。

根据您的意图,可以考虑几种解决方案:

  • 为整个链添加责任:装饰器实现/实现IUmrechner接口并引用一个 IUmrechner元素(另一个装饰器或链的第一个处理程序。
  • 向处理程序添加责任:装饰器扩展/专门化WR并引用WR. 这看起来很灵活,但是让链的填充变得很麻烦。此外,这适用于链,只有当添加的责任可以连接到umrechnen()请求中:否则链无法利用此责任。

第三种值得探索的方法是混合:

  • 更改您的WR以制作下一个IUmechnena 而不是 a WR。因为实际上,如果当前不是合适的,您不需要知道下一个如何计算结果。在这种情况下,在界面级别插入装饰器。然后,您可以在运行时选择是否要在链前插入一个全局装饰器,或者是否要为某些处理程序插入一些装饰器。
于 2022-01-03T11:39:48.583 回答