gpt4 book ai didi

c# - 向流畅的界面构建器添加 fork

转载 作者:行者123 更新时间:2023-11-30 07:35:20 27 4
gpt4 key购买 nike

我有一个小框架,可以让我创建一个管道和过滤器系统。我有了使用流畅的接口(interface)来构建管道和过滤器系统的想法:

        PipeFilter pipeFilter = PipeFilter.StartBuild()
.AddFilter(new SomeFilter1())
.AddFilter(new SomeFilter2())
.AddFilter(new SomeFilter3())
.AddFilter(new SomeFilter4())
.Build();

显示的代码按预期工作。这是系统的“图片”:

SomeFilter1 -> SomeFilter2 -> SomeFilter3 -> SomeFilter4

现在,有一种过滤器不是一个输出而是两个。我称之为 fork 。下面是一个带有 fork 的系统示例:

              |-> SomeFilter2 -> SomeFilter3
SomeFilter1 --|
|-> SomeFilter4

我想实现这样的东西:

        PipeFilter pipeFilter = PipeFilter.StartBuild()
.AddFilter(new SomeFilter1())
.AddBifurcation()
.Output1()
.AddFilter(new SomeFilter2())
.AddFilter(new SomeFilter3())
.Output2()
.AddFilter(new SomeFilter4())
.Build();

但我似乎就是做对不了。这甚至可能吗?在第一个示例中,我只需要一个 PipeFilterBuilder(由 PipeFilter.StartBuild() 返回)。在第二个示例中,我尝试创建其他类型的构建器来混合使用,但这似乎无济于事。

忘了说,这个想法是我可以在任何我想要的地方嵌套 fork ,也就是说,我可以得到长满 Twig 的“树”!

有人可以帮忙吗?

最佳答案

我会走下面的路

PipeFilter pipeFilter = PipeFilter.StartBuild()
.AddFilter(new SomeFilter1())
.AddBifurcation(
withOutput(1)
.AddFilter(new SomeFilter2())
.AddFilter(new SomeFilter3()), /* this separates first and second output */
withOutput(2)
.AddFilter(new SomeFilter4())
)
.Build();

在更多格式方面,我将 Bifurcation 类定义为 Filter 接口(interface)的实现者。

fork 可以有任意数量的输出过滤器,使用 Output 对象链接。为了区分这些输出对象,它们都有一个索引。

因此,addBifurcation 创建一个新的 Bifurcation 对象并添加它,而 withOutput(int) 是一个创建 Output 对象的静态方法,它具有所有必需的方法。请注意,这一点意味着您摆脱了 Builder 和构建对象之间的经典区别,转而使用在 Filter 的基本接口(interface)中定义 Builder 方法的代码。

关于c# - 向流畅的界面构建器添加 fork ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561438/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com