Multicast Delegates实现Builder模式?

时间:2012-07-11 13:29:42

标签: c# design-patterns delegates builder multicastdelegate

使用多播委托是否有合适的方式来实现Builder设计模式?

我问的原因是因为我对Builder模式的概念/理解是一组方法,可以像LEGO块一样组合/重新排列。所以你可能有以下方法:

void Shave(int StrokeCount) { ... }
void FeedTheDog(int Cups) { ... }
void MakeCoffee(int Cups) { ... }
void Shower(int Temperature) { ... }

...可以混合搭配/ LEGO在一起,所以有一天早上你打电话:

Shower()
FeedTheDog()
MakeCoffee()

......另一个早晨:

Shower()
Shave()
FeedTheDog()
MakeCoffee()

......另一个早晨:

MakeCoffee()
FeedTheDog()
Shower()

(等等,无限广告)

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

1 个答案:

答案 0 :(得分:1)

除非您因某种原因想要推迟方法执行,否则我没有真正看到为Builder模式使用多播委托的优势。我从未有过这个要求,但这并不是说它没用。如果您有一个场景,其中一个班级负责“准备食谱”而另一个班级负责“烹饪食谱”,我想这可能有用。但即便如此,您仍然只能使用具有相同签名的方法。这只是我的观点。