动态“管道和过滤器”或“装饰器”

时间:2018-09-30 00:11:02

标签: design-patterns architecture

我目前正在一个项目中,我需要将传入的请求路由到特定的目标。请求具有多个属性,需要组合这些属性以选择正确的目标并对请求执行正确的操作。例如用户1的请求需要路由到我们的测试环境,而用户2的请求则需要路由到集成环境...

还有一些更复杂的情况,例如。用户2的所有请求都必须路由到int,但对应用程序的特定部分的请求实际上应该路由到测试环境。

我的第一种方法是基于客户使用的措辞,而项目的架构师希望采用一种更通用的方法。我们使用2种类型的“过滤器”一起设计了一个替代方案。 每个过滤器都有一个名称,执行时返回该过滤器的名称,该名称应在下一步执行。同样,每个过滤器都有一个映射(键-值对)作为输入,它用于读取或写入。 第一种类型的过滤器允许基于映射中的一个或多个键进行分支(基本上是一个switch-case-statement)。 第二个过滤器从映射中读取一个值(可选),使用正则表达式从该值中选择一些信息(可选),定义输出格式或值,并将结果分配给映射中的键。该过滤器可以包含多个此类操作。

可以在数据库中定义这些过滤器,并进行加载和存储,以便控制器可以轻松按名称查找它们。当控制器收到新请求时,它将键值对提取到映射并执行第一个过滤器。然后,它会执行上一个过滤器返回的过滤器,直到没有过滤器名称要执行的下一个为止。

我不确定是否存在某种正式模式或某种方法的最佳实践,例如该项目的建筑师和我设计的方法,但我没有找到。所以我想请教一下有关该主题的信息。

谢谢。

0 个答案:

没有答案