【发布时间】:2021-07-21 22:52:54
【问题描述】:
我的应用程序有一个计划的(每周)任务来填充对象的不同属性。此应用程序将是多租户,这意味着对于每个租户,应用程序可能必须填充不同的/子集属性。为了满足这个要求,我想为我的预定工作选择正确的设计模式。目前正在积极考虑两种设计模式。
- 装饰器
- 责任链
我可以发现这些模式之间的主要区别在于,在前者中,对象会通过管道中的每个类,而在后者中,管道中只有一个类会作用于对象。
对于装饰器,我将为每个属性创建单独的类,而对于责任链,我将为每个租户创建单独的类。我的理解正确吗?
ps :: 如果我的理解是正确的,我更喜欢Decorator。
【问题讨论】:
-
装饰器听起来不正确。我会在这里使用策略模式。每个作业都是一个对象,每个作业对象都有一个完成该作业的策略。 Strategy 是一个单独的对象,其中包含每个作业的详细信息。如果您可以将每个任务分解为任何租户都可能使用的离散操作,则每个作业可能有多种策略。
-
责任链在我看来也是错误的。根据我的《四人帮》一书,CoR 是“避免将请求的发送者与接收者耦合,通过给多个对象提供更改来处理请求”。这听起来更像是一种管道类型的操作,每个作业都可能被其他对象操作。但是对于这种模式,你分解它的方式似乎是错误的。然而,我投票结束基于意见。
标签: java design-patterns decorator chain-of-responsibility