【问题标题】:Comparing pipe and filter pattern to builder pattern将管道和过滤器模式与构建器模式进行比较
【发布时间】:2015-06-17 02:41:12
【问题描述】:

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

谢谢。

【问题讨论】:

  • Builder 模式你的意思是this
  • 是的 Builder 模式就是我所指的。谢谢。

标签: design-patterns architectural-patterns


【解决方案1】:

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

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

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

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

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

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

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

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

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

普通用户的订购流程是:

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

特权用户的订购流程:

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

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

【讨论】:

  • 嗨 Sattar,这是一个超级答案。非常感谢您为我解决这个问题。问候。
猜你喜欢
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
相关资源
最近更新 更多