使用多播委托是否有合适的方式来实现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()
(等等,无限广告)
由于多播委托允许您将相同签名的方法添加到委托的实例中,并且它们将按照您添加它们的顺序触发,因此这里似乎存在语义连接(在我看来/以我当前的方式)无论如何,思考。不过,我可能错了,这就是我问的原因。
答案 0 :(得分:1)
除非您因某种原因想要推迟方法执行,否则我没有真正看到为Builder模式使用多播委托的优势。我从未有过这个要求,但这并不是说它没用。如果您有一个场景,其中一个班级负责“准备食谱”而另一个班级负责“烹饪食谱”,我想这可能有用。但即便如此,您仍然只能使用具有相同签名的方法。这只是我的观点。