Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多播代理实现生成器模式?_C#_Design Patterns_Delegates_Builder_Multicastdelegate - Fatal编程技术网

C# 多播代理实现生成器模式?

C# 多播代理实现生成器模式?,c#,design-patterns,delegates,builder,multicastdelegate,C#,Design Patterns,Delegates,Builder,Multicastdelegate,使用多播委托是否是实现生成器设计模式的适当方式 我之所以问这个问题,是因为我对构建器模式的概念/理解是一组方法,这些方法可以像乐高积木一样组合/重新排列。因此,您可能有以下方法: void Shave(int StrokeCount) { ... } void FeedTheDog(int Cups) { ... } void MakeCoffee(int Cups) { ... } void Shower(int Temperature) { ... } …可以混合搭配/乐高积木在一起,因此

使用多播委托是否是实现生成器设计模式的适当方式

我之所以问这个问题,是因为我对构建器模式的概念/理解是一组方法,这些方法可以像乐高积木一样组合/重新排列。因此,您可能有以下方法:

void Shave(int StrokeCount) { ... }
void FeedTheDog(int Cups) { ... }
void MakeCoffee(int Cups) { ... }
void Shower(int Temperature) { ... }
…可以混合搭配/乐高积木在一起,因此某一天早上您可以调用:

Shower()
FeedTheDog()
MakeCoffee()
…另一个早晨:

Shower()
Shave()
FeedTheDog()
MakeCoffee()
MakeCoffee()
FeedTheDog()
Shower()
…另一个早晨:

Shower()
Shave()
FeedTheDog()
MakeCoffee()
MakeCoffee()
FeedTheDog()
Shower()
(等等和c.无限和自然)


由于多播委托允许您向委托的实例添加相同的签名方法,并且它们将按照您添加它们的顺序启动,因此这里似乎存在语义联系(在我看来/无论如何,与我当前的思维方式)。不过,我可能错了,这就是我问的原因。

我真的看不到为构建器模式使用多播委托的好处,除非您出于某种原因想推迟方法的执行。我从未有过这样的要求,但这并不是说它没有用处。如果你有一个场景,其中一个类负责“准备菜谱”,另一个类负责“烹饪菜谱”,我想这可能会很有用。即使这样,您也只能使用具有相同签名的方法。不过,这只是我的观点。

除非您出于某种原因想推迟方法的执行,否则我并不认为在构建器模式中使用多播委托有什么好处。我从未有过这样的要求,但这并不是说它没有用处。如果你有一个场景,其中一个类负责“准备菜谱”,另一个类负责“烹饪菜谱”,我想这可能会很有用。即使这样,您也只能使用具有相同签名的方法。不过这只是我的看法。

我想这取决于您是否正在构建委托调用列表。我不确定这两者之间有何关联。你能举一个在构建器模式中使用多播委托的例子吗?@Kevin:我会在上面回答,因为这不仅仅是几行。我想这取决于你是否在构建委托调用列表。我不确定这两者之间有何关联。你能举一个在构建器模式中使用多播委托的例子吗?@Kevin:我会回答上面的问题,因为这不仅仅是几行。