写点什么

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

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

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

关注

评论

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

常见 git 需求整理(持续更新中)

blueju

git 大前端 工具 npm

RabbitMQ集群简介

Kylin

读书笔记 RabbitMQ 消息队列 3月日更 集群简介

RPA助力证券行业高质量发展

Jason Tien

微服务 RPA 金融科技 证券 自动化平台

CloudQuery v1.3.4 版本更新

BinTools图尔兹

oracle 运维 编辑器 sql 数据库管理工具

Python 关键字

HoneyMoose

垃圾代码和优质代码的区别?

xcbeyond

Java 优化代码 3月日更

手写的第一个 Java 应用程序,执行的时候发生了什么?

白色蜗牛

Java

翻云覆雨——前景理论之隔离效应

Justin

心理学 28天写作 游戏设计

密码学系列之:内容嗅探

程序那些事

加密解密 密码学 程序那些事 内容嗅探

带你轻松理解数据结构之Map

蛙人

JavaScript 大前端

容器 & 服务:Kubernetes构件及Deployment操作

程序员架构进阶

Docker Kubernetes 容器 28天写作 3月日更

二十张图让你一分钟全面学习数仓建设之路

初学大数据

大数据 数据仓库

第9周课后练习-性能优化三

潘涛

架构师训练营 4 期

redis工作原理(下)

Sakura

28天写作 3月日更 21天挑战

Markdown中的图标为什么不是图片却可以以图片方式显示

happlyfox

28天写作 3月日更

一个PHPer的Golang之路

万俊峰Kevin

php 微服务 Go 语言

DDR4看这一篇就够了

Kevin Z

寻找被遗忘的勇气(十)

Changing Lin

3月日更

算法攻关 - 重建二叉树 (O(n))_0105

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 重建二叉树

Spring Boot工程结构

韩斌

Spring Boot

Webpack 基石 tapable 揭秘

vivo互联网技术

大前端 webpack 流程管理 tapable

波场环球系统开发|波场环球软件APP开发

系统开发

区块链赋能农产品溯源,农产品质量安全追溯

13530558032

Elasticsearch 定制 Dynamic Mapping 策略

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

正则表达式.05 - 匹配模式

insight

正则表达式 3月日更

《精通比特币》学习笔记(第六章)

棉花糖

区块链 学习 3月日更

B端产品经理自我认知

lenka

3月日更

(28DW-S8-Day18) 可插拔式知识

mtfelix

28天写作

熬夜重构了IDEA插件Toolkit(整合程序员常用的工具箱),更加便捷

Silently9527

Java 程序员 idea插件

成为你向往的那只独角兽 - 《独角兽项目》出版在即

京东科技开发者

DevOps

智慧组工党建系统-数字赋能组织工作

13530558032

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