AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

  • 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:574545
用户头像

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

关注

评论

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

腾讯云,DevOps 领导者!

CODING DevOps

腾讯云 DevOps IDC CODING

开发者有话说|谈谈自己大学期间的收获,以及毕业的求职经历

芯动大师

个人成长 成长路上的思考 初心不变

Qt|制作简单的不规则窗体

中国好公民st

qt 事件 9月月更

数字化办公,企业OA软件技术该如何发力?

FinClip

【存疑】爬虫学习中decode问题

Sher10ck

存疑

前端面试哪些是必须要掌握的

loveX001

JavaScript 前端

Java 面试之技术框架

小小怪下士

Java spring 编程 程序员

Lua脚本在Redis事务中的应用实践

京东科技开发者

数据库 redis 事务 开发语言 Lua脚本

开发者问第四期|统一扫码服务、机器学习服务等问题解答

HarmonyOS SDK

Java | extends关键字【面向对象的第二大特征——继承】

Fire_Shield

Java 9月月更 extends

35岁程序员自荐:我所掌握的架构技术

小小怪下士

Java 程序员 中年危机

这样Debug,排查问题效率大大提升...

程序知音

长安链ca 容器部署(解决无法访问Mysql问题)

长安链

为什么Java中有三种基础的类加载器?

小小怪下士

Java 编程 程序员 程序

Vue3-无限滚动的懒加载-本地数据操作版

Sam9029

Vue 前端 懒加载 9月月更

Docker镜像列表中的none:none是什么

程序员欣宸

Docker 9月月更

大数据调度平台Airflow(六):Airflow Operators及案例

Lansonli

airflow 9月月更

PipyJS - 函数式网络编程语言

Flomesh

Service Mesh 服务网格

成为优秀程序员的8种方法

小小怪下士

Java 程序员 职业发展

基于微信小程序的会议室预定平台开发笔记

CC同学

架构师成长之路——什么是架构师

小小怪下士

Java 程序员 架构 后端

经久不衰的设计定律是不要让我思考的设计

宇宙之一粟

读书笔记 设计 设计思维 设计原则 9月月更

设计模式和七大设计原则不难的

知识浅谈

设计模式 设计原则 9月月更

netty原理分析

小小怪下士

Java 编程 程序员 后端 Netty

2.69分钟完成BERT训练!新发CANN 5.0加持

华为云开发者联盟

人工智能 企业号九月金秋榜

追光动画《杨戬》:水墨、石窟、洛神赋,中式美感背后有中国云计算

B Impact

Vue3-无限滚动的懒加载-模拟网络请求Mock版

Sam9029

Vue 前端 9月月更 无限滚动

英特尔Wi-Fi 7速率提升5倍,为多应用场景带来改变

科技之家

EasyCV带你复现更好更快的自监督算法-FastConvMAE

阿里云大数据AI技术

深度学习 算法 计算机视觉

【网络安全】记一次简单渗透测试实战

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞利用

汽车总线系统

不脱发的程序猿

汽车电子 CAN总线 汽车总线系统

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