将管道和过滤器模式与构建器模式进行比较

时间:2015-04-11 11:28:23

标签: design-patterns architectural-patterns

我试图了解这两种模式,并对这些相似点和不同点感到疑惑。对我来说,他们的方式类似,因为他们似乎都在使用一步一步的过程。有人能否对这两种模式有所了解?我是否正确地说管道和过滤器模式将用于大规模应用和小规模应用中使用的构建器模式?很抱歉继续,但在构建器模式中,所有步骤是否同时发生,即在返回完成的对象之前传递给构建器的所有属性?

感谢。

1 个答案:

答案 0 :(得分:2)

Pipes and Filters模式是Enterprice集成模式,而Builder pattern是面向对象设计模式之一。

这两种模式具有不同的语义:

  • 用于对消息执行复杂处理的管道和过滤器 来自异构系统。通过管道消息是 传输到过滤器。反过来,过滤器处理收到的 消息,并传输下一个管道。
  • Builder模式是一个对象设计模式。它用的时候 创建一组对象的过程包括几个步骤。

如您所见,比较这两种模式是不正确的。但它们可以结合使用:使用Builder,您可以配置过滤器的内容 参与处理T的消息类型。之后,可以使用配置的对象:

  • 创建消息将通过其创建的端点(它将是管道) 传播

  • 创建将处理消息的进程(甚至虚拟机实例,具体取决于应用程序)(这将是过滤器)

例如,您有图书销售系统:

  • 买家分为两种类型:普通和特权。
  • 特权用户可获得N%的折扣。

在这种情况下,Pipes可能是TCP通道,Filters将处理订单。

普通用户的订购流程如下:

  1. 将书籍添加到购物篮
  2. 授权
  3. 从卡中提取款项
  4. 特权用户的订购流程:

    1. 将书籍添加到购物篮
    2. 授权
    3. 折扣计算
    4. 从卡中提取款项
    5. 可以看出,这两个过程相差一步。分支过程在用户授权后进行。在用户授权之后,过滤器#2(授权)必须生成并发送特定类型的消息:特权用户或普通用户。发送此消息后应反应不同的过滤器。过滤特权用户的折扣计算或普通用户的取款。可以使用Builder模式描述以声明方式进行的此配置。