写点什么

面向对象设计原则与函数式编程

  • 2014-03-31
  • 本文字数:736 字

    阅读完需:约 2 分钟

Richard Warburton 最近在演讲中讲到,面向对象编程有诸多公认的设计原则,比如 SOLID 原则,但是转向函数式编程后,许多开发人员就不知道如何运用这些设计技巧了。

Mark Seemann 在最近的一篇博客中也就同一主题发表了自己的看法,如果你能将 SOLID 原则发挥到极致,那么函数式编程同样非常吸引人。

Richard 是伦敦 JCP 委员会的一员。在演讲中,他认为 SOLID 原则——由 Robert C. Martin 在 21 世纪初期提出——是公认的面向对象编程设计原则之一,并仔细分析了 SOLID 的五个原则,试图找出与函数式相同或者至少与某一功能相关的蛛丝马迹。

根据 Richard 的经验,尽管许多开发人员不知道在函数式设计中如何使用已有的设计技巧,但是函数式编程往往有助于实现 SOLID 原则,并且在实现面向对象的封装方面,函数式思维确实能够助你一臂之力。

Richard 得出的结论是每个 SOLID 原则与函数式都有对应关系。我们不用放弃那些已有的设计模式;与之相反,通过简化或清理,或者以一种简化方式使用这些已有知识,我们还能改善已有设计模式。

Mark 是一位软件架构师并兼职独立顾问。以他的经验,SOLID 原则可以促成一种设计风格,而且该风格使函数式编程颇有吸引力。

当使用 SOLID 原则中的单一职责原则( SRP )和接口隔离原则( ISP )时,最终的结果是代码库中有很多细粒度接口和类,每个这样的类和接口只有一个方法。

所以 Mark 由此得出结论,如果因为反复使用 SOLID 原则而导致很多只有一个方法的小类,那么我们可以将函数建模成具有数据的行为,这也可能是转向函数编程语言的机会,如 F#语言。


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-03-31 07:574529
用户头像

发布了 28 篇内容, 共 11.0 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

第九周总结

fmouse

极客大学架构师训练营

JVM垃圾回收及秒杀系统

天天向上

极客大学架构师训练营

第九周作业

fmouse

极客大学架构师训练营

第九周总结

alpha

极客大学架构师训练营

神经网络泛化

计算机与AI

神经网络 学习

架构师训练营第五周作业

丁乐洪

native关键字作用到底是什么?

秦怀杂货店

Java 源码 源码刨析 native

并发编程Bug的源头-原子性

996小迁

Java 程序员 架构 面试 并发编程

并发编程Bug的源头-原子性

Java架构师迁哥

区块链钱包开发功能与优势,数字货币钱包APP开发

13530558032

极客时间架构师训练营 1 期 - 第 9 周总结

Kaven

性能优化三第九周作业「架构师训练营第 1 期」

天天向善

极客时间架构师训练营 - 第五期作业

文江

斐波那契查找

ilovealt

算法和数据结构

合约API跟单系统开发方案,智能合约跟单软件

13530558032

训练营第九周作业 1

仲夏

极客大学架构师训练营

第九周作业

alpha

极客大学架构师训练营

架构师第2期第5周作业一

老腊肉

极客大学架构师训练营

三步法解析Axios源码

执鸢者

大前端 axios

数字货币交易所开发价格,深圳区块链交易所系统APP开发

13530558032

交易所量化机器人搭建--市值管理机器人

13530558032

微服务手册:分库分表从分析到实践,不再停留只会说分库分表

互联网应用架构

分库分表

第8周 作业2

Yangjing

极客大学架构师训练营

首次排查 OOM 实录

AI乔治

Java 架构 OOM

架构师训练营第 1 期第九周作业

Leo乐

极客大学架构师训练营

第八周作业 1

Yangjing

极客大学架构师训练营

作业-第5周

arcyao

极客时间架构师培训 1 期 - 第 9 周作业

Kaven

架构师训练营第 1 期第九周总结

Leo乐

极客大学架构师训练营

MySQL 连接为什么挂死了?

Java架构师迁哥

Week 9 设计秒杀系统

黄立

面向对象设计原则与函数式编程_后端_Jan Stenberg_InfoQ精选文章