写点什么

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

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

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

关注

评论

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

小伙伴面经分享京东+面试八股文整套面试真题(含答案)

钟奕礼

Java 程序员 java面试 java编程

工业物联网DCS和SCADA的区别

2D3D前端可视化开发

物联网 DCS web组态软件 SCADA 工业组态

EMR-StarRocks 与 Flink 在汇量实时写入场景的最佳实践

阿里云大数据AI技术

数据库 flink EMR 十一月月更

LigaAI X 猴子无限 | AIGC火了,人类又得到了什么?

LigaAI

分布式 大模型训练 研发协作平台 AIGC 大规模离散模型

远程触发Jenkins的Pipeline任务

程序员欣宸

jenkins 11月月更 pipiline

破坏系统是为了更稳定?混沌工程在去哪儿的4个阶段实践

TakinTalks稳定性社区

混沌工程 故障治理

提升汽车APP用户体验,火山引擎APMPlus的“独家秘笈”

字节跳动终端技术

性能监控 APP开发 应用性能 火山引擎 APMPlus

案例 | 九科信息为某大型企业设计社保公积金自动缴存解决方案

九科Ninetech

数据治理必读|基于Dataphin,快速建设高质量数据支撑业务发展

瓴羊企业智能服务

一发一存一消费,跟着p8大佬深入学习Java中间件技术及其应用开发

钟奕礼

Java 程序员 java面试 java编程

HDC 2022 开发者主题演讲与技术分论坛干货分享(附课件)

HarmonyOS开发者

HarmonyOS

跬智信息 (Kyligence) 荣获信创“大比武”重要奖项,坚持做大做实国产软件

Kyligence

数据库 数据分析 云平台技术

几类主流的虚拟化技术

穿过生命散发芬芳

虚拟化技术 11月月更

微服务调用的正确打开方式

Java全栈架构师

Java 程序员 面试 微服务 后端

个推TechDay治数训练营直播预告 | 从方法论到落地应用,详解企业标签体系建设要点

个推

标签 用户画像 标签体系

个推发布《Android13适配指南》,解读Android13新特性

个推

android 安卓 安卓开发

解密金融行业数据云平台建设密码

数造万象

完全解析大数据的高可用集群部署

好程序员IT教育

大数据

自学 UI 设计有哪些书籍推荐

千锋IT教育

2022年11月《中国数据库行业分析报告》重磅发布!精彩抢先看

墨天轮

人工智能 数据库 dba 智能运维 国产数据库

Baklib知识库|为什么知识共享工具对减少内部知识缺口至关重要

Baklib

知识

超详细图文保姆级教程:App开发新手入门(一)

YonBuilder低代码开发平台

开发者 App 新手入门

测试自动化中遵循的最佳实践

禅道项目管理

自动化测试

在线电子表格,助力数据分析人员高效办公

流量猫猫头

大数据

助力教育信创快速发展,统信软件与山东四所高校建立信创应用重点实验室

统信软件

软件 操作系统 教育 信创产业 教育新创

阿里云液冷技术荣获CDCC数据中心科技成果一等奖

云布道师

阿里云 基础设施建设

这份1658页的Java面试核心突击讲,成功让我上岸阿里

小二,上酒上酒

Java 程序员 面试 阿里 大厂面试

推荐5款IDEA插件,堪称代码质量检查利器!

程序员小毕

Java 程序员 程序人生 后端 IDEA

CSS 基础属性篇组成及作用

千锋IT教育

手把手教你成为荣耀开发者:商户服务开通指南

荣耀开发者服务平台

android 开发者 手机 荣耀 honor

统一移动办公门户,满足政企高效安全协作需求

BeeWorks

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