写点什么

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

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

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

关注

评论

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

java安全编码指南之:可见性和原子性

程序那些事

Java java安全编码 java编码指南 java安全编码指南

关于Java 编译Servlet或者自定义Tag,引入包的问题

谷鱼

Java

Python 自动化测试全攻略:五种自动化测试模型实战详解

葡萄城技术团队

自动化测试

架构师训练营第 2 周作业

netspecial

极客大学架构师训练营

缓存解决方案-技术专题-Caffeine Cache

码界西柚

从大数据的角度来谈谈运维监控这件事儿

小清新同学

运维 监控

架构师训练营第 1 期第二周课后练习题

Leo乐

极客大学架构师训练营

不一样的面向对象(二)

书旅

php 面向对象

项目实战,动态增删form表单

麦洛

jquery 克隆

RN运行项目报错:Unable to resolve module `./debugger-ui/debuggerWorker.js` from ``

凌宇之蓝

ios android React Native

架构师训练营第 1 期第 2 周学习总结

owl

极客大学架构师训练营

监控应用,应该监控什么?

小清新同学

云计算 运维 监控

MySQL varchar类型最大值,原来一直都理解错了

架构精进之路

MySQL varchar

保留时序数据波动细节的一种采样算法

小清新同学

监控 时序数据库

难得干货,揭秘支付宝的2维码扫码技术优化实践之路

JackJiang

支付宝

架构师训练营第二周学习总结

尹斌

刷爆朋友圈的字节跳动编码题,今天把解析思路分享下!

Java架构师迁哥

收藏+下载!Flink 社区最全学习渠道汇总

Apache Flink

flink

Go中的HTTP请求之——HTTP1.1请求流程分析

Gopher指北

HTTP Go web Go 语言

架构师训练营第二周作业

尹斌

什么才是“应用拓扑”?

小清新同学

运维 监控

2B还是2C,这真是个问题

MavenTalker

SaaS

高难度对话读书笔记—认知篇2

wo是一棵草

如何设计Go语言中的channel

soolaugust

channel goroutines Go 语言

Dolphinscheduler系统架构设计

dll

Apache DolphinScheduler

程序执行太慢?快来学习SIMD加速技术,这个案例下的加速效果我也没想到(附带动手实验)

Optimize-Lab

优化代码 优化技巧 开源社区 simd Go 语言

架构师训练营第 1 期第 2周作业

owl

极客大学架构师训练营

自己动手写SQL执行引擎

无毁的湖光

Java MySQL 数据库 Linux 算法

如何快速制造OOM

Since

JVM OOM

虚拟卡兑换架构设计

孙志平

传销资金盘挂靠区块链热点 肃清整顿热潮拉开帷幕

CECBC

区块链 金融

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