Ext*_*kun 9 language-agnostic oop functional-programming
PHP和.Net有闭包; 我一直想知道在OOP和设计模式中使用闭包的一些例子,以及它们相对于纯OOP编程有什么优势.
作为澄清,这不是OOP与函数编程,而是如何在OOP设计中最好地使用闭包.闭包如何适用于工厂或观察者模式?例如,您可以采用哪些技巧来澄清设计并导致更松散的耦合.
闭包对于事件处理很有用。这个例子有点做作,但我认为它传达了这样的想法:
\n\nclass 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}\nRun Code Online (Sandbox Code Playgroud)\n\n我的文件打开器可以通过直接调用来打开文件instance.Open(pathToFile),也可以由某些事件触发。如果我没有匿名函数+闭包,我就必须编写一个除了响应此事件之外没有其他目的的方法。