自然、人类、机器
Home › Forums › 《冒号课堂》讨论区 › 闭包与对象
Tagged: OO, 闭包
这几天我用C#3.0的闭包实现了OOP风格的对象:
http://www.cnblogs.com/weidagang2046/archive/2010/11/01/1865899.html
从命令式和函数式都可以走到对象上来,殊途同归啊!
《冒号课堂》4.4中也提到闭包与OOP的相似之处——把函数与变量捆绑起来。你这篇文章总结得不错,如果能对闭包表达与OO表达各自的优劣进行探讨就更好了。否则,读者会认为闭包只是简单的语法糖。
我觉得闭包更加灵活,而OOP的类更加严格和规范;前者适合局部使用,后者适合大的设计。郑老师怎么看呢?
在一个以OO为主的代码中,你的说法是有道理的。不过说到底,这还是个范式选择的问题。函数式同样可能用于大的设计,只是人们通常不习惯而已。函数范式对问题的分解与复合方式与OO范式是非常不同的,孰优孰劣,取决于问题本身的特质和设计者的倾向。其实,你的参考文章( http://csharpindepth.com/Articles/Chapter5/Closures.aspx )中“What’s the big deal?”对闭包的好处已经作了一些说明。