NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

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

关注

评论

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

蓝易云:Linux系统命令:du与df的区别!

百度搜索:蓝易云

Linux 磁盘 du df 硬盘

Lightroom Classic 2023 for Mac(摄影后期图像编辑软件) v12.4完美激活版

mac

图像处理软件 苹果mac Windows软件 Lightroom Classic 2023

Python 列表操作指南2

小万哥

Python 程序员 软件 后端 开发

探索Redis与MySQL的双写问题:挑战与解决方案

Java随想录

Java MySQL redis

股票交易技术指标全解析:15个关键指标助您掌握市场脉搏

Geek_d872c2

股票 技术指标

从“概念”到“应用”,字节跳动基于DataLeap的DataOps实践

字节跳动数据平台

数据中台 DataOps 企业号9月PK榜

DxO PhotoLab 7 for mac(专业raw图像处理软件) 7.0.1.31永久激活版

mac

图像处理软件 苹果mac Windows软件 DxO PhotoLab 7

PDF Expert for mac(pdf编辑工具) v3.5.2激活密钥版

mac

PDF Expert 苹果mac Windows软件 PDF编辑软件

公链如何开发?怎么开发一条可靠的公链

V\TG【ch3nguang】

架构纠缠系列:简单与复杂的技术方案如何取舍

凌晞

架构设计 架构决策

为什么zookeeper不满足线性一致性依然可以实现分布式锁?

Jerry Tse

zookeeper zookeeper分布式锁 分布式锁原理

简单的解压缩软件 Bandizip Archiver激活中文最新版

胖墩儿不胖y

Mac软件 解压缩工具 压缩软件

火山引擎ByteHouse:如何提升18000节点的ClickHouse可用性?

字节跳动数据平台

数据库 大数据 数据仓库 云原生 企业号9月PK榜

Mac平台PDF编辑和阅读工具 PDF Expert 3

展初云

PDF Mac软件 PDF Expert for Mac

专业好用的照片处理和编辑软件 DxO PhotoLab 7 for mac

展初云

Mac软件 DxO PhotoLab 7 raw智能照片处理工具

钱包发展的未来:ERC-20代币的趋势和创新

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

简单易用的程序创建工具:VMware InstallBuilder Enterprise激活版

mac大玩家j

软件推荐 Mac软件

Redis性能优化:理解与使用Redis Pipeline

Java随想录

Java redis

04. 人工智能核心基础 - 导论(3)

茶桁

人工智能

神器 CodeWhisperer

亚马逊云科技 (Amazon Web Services)

人工智能

蓝易云:linux系统切换IP实现HTTP代理教程。

百度搜索:蓝易云

云计算 Linux IP HTTP 云服务器

非一般中国“千年霓裳 遇见运河”通州大运河畔再现传统文化盛景

联营汇聚

文心一言 VS 讯飞星火 VS chatgpt (105)-- 算法导论10.1 3题

福大大架构师每日一题

福大大架构师每日一题

ChatGPT“与图对话”初体验

无人之路

ChatGPT

人生最优解:体验最极致的人生

少油少糖八分饱

人生 回忆 体验 阅读笔记 死前归零

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