【问题标题】:Pipeline architecture管道架构
【发布时间】:2013-06-29 05:13:51
【问题描述】:

在 OOP 方面如何实现 Pipeline 架构?

为了更好地解释我自己:

Source -> Filter -> Filter -> Filter -> Sink

假设我们有一个名为 PipelineStage 的基类。如何实现 Filter、Source 和 Sink?

我有两个想法:

带有ISource和ISink接口

使用来自 Filter 的 Sink 和 Source 子类化

【问题讨论】:

  • 为什么它必须在 OOP 方面?大多数对流水线数据流架构具有一流支持的语言(例如 Erlang 和 Go)不使用 OOP 来实现数据流。事实上,Erlang 完全缺乏 OO 工具(除非您将进程视为可以向其发送消息的对象),而 Go 只是匆匆一瞥。
  • 好吧,因为应用程序是使用 OOP 编写的。这个想法是使用管道进行视频处理,并能够在运行时更改管道等。

标签: c++ oop design-patterns architecture pipeline


【解决方案1】:

Source 和 Sink 似乎过多且整体结构复杂。它们不需要是过滤器。

来源就是来源,这就是它的功能。如果知道从哪里获取数据以及如何将其传递到管道。不要强迫他成为其他人,而是源泉。

Sink 也是如此。

如果您想要验证输入的内容 - 添加一个额外的验证过滤器。

【讨论】:

    【解决方案2】:

    请看一下责任链模式。您可以使用构建器模式根据一些规则构建链,一旦构建,触发源,它通过链处理直到结束(Sink)。断链问题很常见,但还是有办法处理的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多