第八章 以行为为中心的程序设计

728 篇文章 1 订阅
349 篇文章 0 订阅
第八章 以行为为中心的程序设计 本章介绍■ 用函数表示行为■ 扩展程序行为■ 处理函数和闭包■ 用决策树测试客户端在第七章,我们讨论了以数据中心的应用程序,知道了,设计函数式程序的第一步是定义相关的数据结构。还有一种情况,数据结构中包含了某种形式的行为,既可能是用户调用的命令,也可能是程序在某一点执行的任务。对这种情况,我们想统一处理,而不是为每一种行为的功能进行硬编码,因此,在数据结构的设计上,需要容易修改,不论是编译时,还是运行时。我们在第七章讨论过的以行为为中心的应用程序示例,是使用图形滤镜处理图像。应用程序需要保存滤镜,根据应用的需要添加或删除滤镜。在程序中表示滤镜时,我们可以使用列表来表示实际应用的滤镜集合;更难的问题是,我们应该使用什么数据结构来表示滤镜本身。显然,滤镜不是真正的数据,尽管它可能以某种方式进行参数化;相反,它表示行为,在函数式语言中表示行为,最简单的方法是使用函数。在第五章,我们已经知道,函数可以看作是值,因此,可以把函数与其他任何数据类型一样来处理。这样,用函数的列表来表示图形滤镜,是完全合理的数据结构。以行为为中心和以数据为中心之间的区别,更多的是概念上,而非技术上。理解设计的应用程序是哪种类型,对于创建适当的设计,是有帮助的。如果应用程序符合下列任何一个条件,可能应该设计成以行为为中心的应用程序:■ 事先不(不可能)知道所需功能的确切集。■ 用户或程序员应该能够轻松地添加新的行为。■ 程序可以使用外部插件进行扩展。■ 用户可以通过组合简单的功能,创建任务。从前面几章我们知道,以数据为中心的函数式程序设计,很大程度上依赖函数式数据类型,最重要的就是差别联合。在 C# 中,这不特别合乎习惯,所以,我们主要讨论 F#。另一方面,在 C# 3.0 中,使用函数表示简单的行为,是完全有可能。由于在 C# 中可以用 Func 委托表示函数,因此,这一章中的大多数示例,C# 和 F# 都能写。注意在一个相当庞大的应用程序中,通常会结合两种方法。大型的图形编辑器既支持矢量图形滤镜,也支持光栅图形滤镜,可能使用以数据为中心的方法来表示形状,以行为为中心的方法,把图形滤镜应用到图像。实现图形处的内容理超出本章范围,但可以在 http://www.functional-programming.net 找到图形处理的示例应用程序。在这一章,我们将使用一个不断扩展的示例,演示面向行为的应用程序;我们将开发一个应用程序,检查是否应该为客户提供贷款。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值