我创建了以下 UML。它基本上是一个货币转换器。就像现在一样,它是一个责任链。但现在我想添加一个装饰器模式。因此,例如,添加一个固定的处理量。如何在此处插入装饰器模式?谢谢您的帮助!
问问题
42 次
1 回答
1
责任链旨在为多个对象(WR
专业化实例)提供处理请求的可能性,这里是操作umrechnen()
。装饰器旨在增加额外的责任,例如计算一些固定的交易费用。
根据您的意图,可以考虑几种解决方案:
- 为整个链添加责任:装饰器实现/实现
IUmrechner
接口并引用一个IUmrechner
元素(另一个装饰器或链的第一个处理程序。 - 向处理程序添加责任:装饰器扩展/专门化
WR
并引用WR
. 这看起来很灵活,但是让链的填充变得很麻烦。此外,这适用于链,只有当添加的责任可以连接到umrechnen()
请求中:否则链无法利用此责任。
第三种值得探索的方法是混合:
- 更改您的
WR
以制作下一个IUmechnen
a 而不是 aWR
。因为实际上,如果当前不是合适的,您不需要知道下一个如何计算结果。在这种情况下,在界面级别插入装饰器。然后,您可以在运行时选择是否要在链前插入一个全局装饰器,或者是否要为某些处理程序插入一些装饰器。
于 2022-01-03T11:39:48.583 回答