购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 讨论

这个例子再一次阐释了将复杂的代码拆解为小块的方式,而这些小块可以使用函数的方式进行重新装配,并形成完整的功能。本章的目标并不是为Core Image定义一个完整的API,而是想说明在更实际的案例中如何使用高阶函数和复合函数。

为什么要做这么多努力呢?事实上Core Image API已经很成熟并能够提供几乎所有你可能需要的功能。但是尽管如此,我们相信本章所设计的API也有一些优点:

· 安全 ——使用我们构筑的API几乎不可能发生由未定义键或强制类型转换失败导致的运行时错误。

· 模块化 ——使用 >>> 运算符很容易将滤镜进行组合。这样你可以将复杂的滤镜拆解为更小、更简单,并且可复用的组件。此外,组合滤镜与组成它的组件是完全相同的类型,所以你可以交替使用它们。

· 清晰易懂 ——即使你从未使用过Core Image,也应该能够通过我们定义的函数来装配简单的滤镜。要得到结果,你并不需要知道像 kCIOutputImageKey 一样特殊的字典键,也不需要关心对 kCIInputImageKey kCIInputRadiusKey 这样的键进行初始化。单看类型,你几乎就能够知道如何使用API,甚至不需要更多文档。

我们的API提供了一系列能够用来定义和组合滤镜的函数。使用和复用任何自定义的滤镜都是安全的。每个滤镜都能被独立测试和理解。比起原来的Core Image API,我们的设计会更让人偏爱。如果要说理由,则相信上面几点足够让人信服。 GT6j9lTU6PHev9J7wvyzujfN76SHVTPVP0UNk6NL2s7DnN9dwLdpDRZh8XiAwiAp

点击中间区域
呼出菜单
上一章
目录
下一章
×