OOP闭包有哪些用途?

Ext*_*kun 9 language-agnostic oop functional-programming

PHP和.Net有闭包; 我一直想知道在OOP和设计模式中使用闭包的一些例子,以及它们相对于纯OOP编程有什么优势.

作为澄清,这不是OOP与函数编程,而是如何在OOP设计中最好地使用闭包.闭包如何适用于工厂或观察者模式?例如,您可以采用哪些技巧来澄清设计并导致更松散的耦合.

dav*_*nal 3

闭包对于事件处理很有用。这个例子有点做作,但我认为它传达了这样的想法:

\n\n
class FileOpener\n{\n     public FileOpener(OpenFileTrigger trigger)\n     {\n         trigger.FileOpenTriggered += (sender, args) => { this.Open(args.PathToFile); };\n     }\n\n     public void Open(string pathToFile) \n     { \n         //\xe2\x80\xa6 \n     }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的文件打开器可以通过直接调用来打开文件instance.Open(pathToFile),也可以由某些事件触发。如果我没有匿名函数+闭包,我就必须编写一个除了响应此事件之外没有其他目的的方法。

\n