写点什么

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

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

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

关注

评论

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

Vscode 搭建 C / C++ 开发环境

攻城狮杰森

c c++ vscode 开发环境 7月月更

Azkaban 安装文档

怀瑾握瑜的嘉与嘉

Azkaban 7月月更

实习是步入社会的一道坎

KEY.L

7月月更

Setup的使用技巧

bo

Vue 前端 7月月更

现场可程式化逻辑闸阵列 FPGA

贾献华

7月月更

C++ Workflow异步调度框架 - 性能优化网络篇

1412

c++ 开源 workflow 异步调度 网络框架

MatrixCube揭秘102——300行实现的完整分布式存储系统MatrixKV

MatrixOrigin

MatrixOrigin MatrixOne 矩阵起源 MatrixCube MatrixKV

Spring项目中如何正确处理对象依赖

技术小生

spring 7月月更

你学会如何将项目部署到Linux系统上了吗?要不我带你耍耍。

Java学术趴

7月月更

群里的初级工程师求助说,要采集采招数据,必须给他安排上

梦想橡皮擦

Python 爬虫 7月月更

ArkUI开发框架组件的生命周期详解

坚果

HarmonyOS OpenHarmony Open Harmony 7月月更

函数初认识-下

芒果酱

C语言 7月月更

【萌新解题】四数之和

面试官问

LeetCode

如何在Linux中比较多个文件?这12个优秀工具了解一下!

wljslmz

Linux 7月月更 文件比较

uni-app进阶之自定义【day13】

恒山其若陋兮

7月月更

模块7(王者荣耀商城异地多活架构设计)

Geek_701557

Linux tar打包

工程师日月

Linux tar 7月月更

分布式事务的性能设计

穿过生命散发芬芳

分布式事务 7月月更

Okaleido或杀出NFT重围,你看好它吗?

BlockChain先知

C++ Workflow 异步编程框架 - 性能优化上篇

1412

c++ GitHub 开源 异步编程 workflow

Vue3 状态管理 Pinia 快速入门指南

程序员海军

Vue 状态管理 7月月更

模块1 作业

长安链学习研究-存储分析wal机制

长安链

排序子序列与倒置字符串

未见花闻

7月月更

C#入门系列(二十二) -- 面向对象之多态

陈言必行

7月月更

Istio XDS配置生成实现

阿泽🧸

envoy 7月月更

读书笔记之《深入理解Java虚拟机:JVM高级特性与最佳实践》(下)

蔡农曰

Java 后端 JVM 后端技术 Java 开发

Mysql 温故知新系列「触发器详解」

安逸的咸鱼

MySQL 7月月更

【刷题记录】13. 罗马数字转整数

WangNing

7月月更

Flutter 使用 AnimatedSwitcher 做场景切换

岛上码农

flutter ios 前端 安卓开发 7月月更

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