写点什么

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

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

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

关注

评论

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

Microsoft Excel 2019 for Mac(excel电子表格)中文版

Mac相关知识分享

数字孪生丨如何利用现有数据提升产品耐久性?

Altair RapidMiner

大数据 数字孪生 智能制造 altair 仿真设计

【YashanDB知识库】个别数据库用户无法登录数据库,报错 io fail:IO.EOF

YashanDB

数据库 yashandb

TG Pro for mac(Mac硬件温度检测工具)

Mac相关知识分享

SecureCRT for mac(终端SSH仿真工具)

Mac相关知识分享

Understand for Mac(优秀的源代码审查工具)

Mac相关知识分享

代码质量保证的利器:Git 预提交钩子

俞凡

最佳实践

GitHub下载加速FastGitHub for Mac

理理

【YashanDB知识库】原生mysql驱动配置连接崖山数据库

YashanDB

数据库 yashandb

【YashanDB知识库】解压安装包时报错"tar:Error is not recoverable"

YashanDB

数据库 yashandb

分析代码变更与新增代码覆盖率的最佳实践

测试人

软件测试

2024 京东零售技术年度总结

京东零售技术

Autodesk Maya 2025 for Mac(三维动画和视觉特效软件)中文版

Mac相关知识分享

【YashanDB知识库】调用外部UDF未能识别Java环境配置

YashanDB

数据库 yashandb

【YashanDB知识库】过期统计信息导致SQL执行计划变差

YashanDB

数据库 yashandb

【YashanDB知识库】如何使用MySQL客户端链接YashanDB

YashanDB

数据库 yashandb

Transmit 5 for Mac(强大的FTP客户端)

Mac相关知识分享

Acrobat Pro DC 2022 for Mac(专业PDF编辑软件)中文版

Mac相关知识分享

UVR5终极人声去除器Mac破解版 ULTIMATE VOCAL REMOVER V5下载安装

理理

代码复杂度定义与分析方法

测试人

软件测试

共探数据可信流通时代的密态新算力|走进隐语年度嘉年华精彩现场

隐语SecretFlow

【YashanDB知识库】隐藏参数怎么查看初始值

YashanDB

数据库 yashandb

AI Agent:一场智能革命的开始

TechubNews

AI Agent

HarmonyOS NEXT——独立开发者们的机遇之门

最新动态

【YashanDB知识库】yashandb升级后,yasboot restart出现版本回退、报错control file version incompatible

YashanDB

数据库 yashandb

阿里巴巴1688 API接口深度解析:高效获取商品详情与关键词搜索商品实战指南

代码忍者

1688API接口

Premiere Pro 2024 for Mac(PR 2024视频编辑软件)中文版

Mac相关知识分享

ITIL 4的4个维度

ServiceDesk_Plus

ITIL

从设计到伴飞:数字孪生赋能航空航天新时代

DevOps和数字孪生

航天航空

复盘2024,大模型的商业化主线是什么?

脑极体

AI

ExpressBurn Plus for Mac(专业DVD光盘刻录工具)

Mac相关知识分享

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