博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《高阶Perl》——1.6 函数式编程与面向对象式编程
阅读量:6874 次
发布时间:2019-06-26

本文共 818 字,大约阅读时间需要 2 分钟。

1.6 函数式编程与面向对象式编程

现在停下来看看已经做的。已经有了一个有用的函数,total_size(),它包含了在其他应用中遍历目录结构的有用代码。所以为使total_size()更具普遍意义,把所有与计算大小相关的部分提出来,替换成用户指定的任意函数的调用。结果就是dir_walk()。现在,对于任何需要遍历目录结构并做某事的程序,dir_walk()处理遍历部分,参数函数处理“做某事”部分。通过传递合适的函数对给dir_walk(),可以使它做任何想要它做的事情。已经获得了灵活性与复用dir_walk()的机会,通过提取有用的部分并参数化成两个函数参数。这便是函数式编程风格的核心。

面向对象式(Object Oriented,OO)的编程风格最近受到了更多关注。OO风格的目标和函数式风格的一样:期望通过把软件分割成通用的部分提高它的可复用性。

在一个OO系统中,可以类似地转换total_size(),但是结果看起来会不同。可以把total_size()做成一个目录遍历对象的抽象基类,这些对象有一个方法,dir_walk(),它依次调用两个未定义的虚方法file与directory。 (在C++中,它们称为纯虚方法(pure virtual method)。)这样一个类本身还没有用处,因为缺少file方法与directory方法。为了使用这个类,你要产生一个子类定义file方法与directory方法,然后产生子类的对象。这些对象将全部继承相同的dir_walk方法。

在这个例子中,我认为函数式的风格会带来一个更轻量级和更易用的解决方案,并使参数函数靠近它被使用的地方,而不是陷入一个类文件里。但重要的一点是尽管风格不同,原函数分解成的有用的组成部分却有完全相同的结构。函数式风格使用函数式参数,面向对象式风格使用纯虚方法。虽然本书的剩余部分是关于函数式编程的,但许多技术也将直接适用于面向对象式编程风格。

转载地址:http://jdmfl.baihongyu.com/

你可能感兴趣的文章
python实现linux下指定目录下文件中的单词个数统计
查看>>
Android源代码下载编译
查看>>
jsp---语句对象Statement
查看>>
RESTful API
查看>>
前端UI框架总结
查看>>
Atom 初识
查看>>
Ext.MessageBox消息框
查看>>
电脑知识:修电脑(转)
查看>>
jQuery 1.7.2 animate功能跨浏览器Bug修补
查看>>
HTML <map>标签的使用
查看>>
通向架构师的道路(第一天)之Apache整合Tomcat - lifetragedy的专栏 - 博客频道 - CSDN.NET...
查看>>
智慧东湖让城市慢游更幸福
查看>>
陕西联通推进高速公路WiFi覆盖
查看>>
linux 用户权限和组权限
查看>>
RPM的使用
查看>>
我的友情链接
查看>>
lvs
查看>>
原型图设计软件
查看>>
setTimeout和setIntelval的区别
查看>>
[C#]通过方法获得游戏人数和玩家姓名
查看>>