2

我试图了解这两种模式,并想知道它们的相似之处和不同之处。对我来说,它们在某些方面很相似,因为它们似乎都使用了一步一步的过程。有人可以对这两种模式有更多的了解吗?我是否说管道和过滤器模式将用于更大规模的应用程序和构建器模式用于小型应用程序?抱歉继续说,但在构建器模式中,所有步骤是否同时发生,即在返回完成的对象之前传递给构建器的所有属性?

谢谢。

4

1 回答 1

2

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

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

  • 管道和过滤器用于对来自异构系统的消息执行复杂的处理。通过管道消息被传输到过滤器。过滤器依次处理接收到的消息,并传输下一个管道。
  • 建造者模式是一种对象联合设计模式。当创建一组对象的过程包含几个步骤时使用它。

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

  • 创建端点(它将是管道),通过它传输消息

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

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

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

在这种情况下,管道可能是一个 TCP 通道,过滤器将处理订单。

普通用户的订购流程为:

  1. 将书籍添加到购物篮
  2. 授权
  3. 从卡中取款

特权用户的订购流程:

  1. 将书籍添加到购物篮
  2. 授权
  3. 折扣的计算
  4. 从卡中取款

可以看出,这两个过程彼此相差一步。分支过程发生在用户授权之后。用户授权后,Filter #2(授权)必须生成并发送特定类型的消息:特权用户或普通用户。发送此消息后应该对不同的过滤器做出反应。过滤特权用户的折扣计算或普通用户的提款。可以使用 Builder 模式来描述这种声明方式的配置。

于 2015-04-11T18:18:46.413 回答