写点什么

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

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

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

关注

评论

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

编程之美!从线程池状态管理来看二进制操作之美

Geek Tech

Java 源码分析 线程池

Service Mesh最火项目Istio是怎么做流量管理的?

AI乔治

Java 架构 istio

2020年书单

井中人

甲方日常72

句子

工作 随笔杂谈 日常

盘点 2020 | 鲜衣怒马少年时,不负韶华行且知!

程序员的时光

程序员 成长 编程之路 计算机 盘点2020

Fair World智能合约APP系统软件开发

系统开发

【理论篇】浅析分布式中的 CAP、BASE、2PC、3PC、Paxos、Raft、ZAB

merlinfeng

大数据 分布式

【经验分享】遵循10步法,应用系统发布效率大不同!

嘉为蓝鲸

敏捷 运维自动化 部署 发布流程 应用发布

Windows安装MySQL5.7教程

Simon

MySQL windows 安装 七日更

Gridea+GitHub搭建个人博客

Simon

GitHub Pages 博客 七日更

合成游戏app系统开发软件技术

生产环境全链路压测建设历程17:某快递A股上市公司的生产压测案例之前言

数列科技杨德华

全链路压测 七日更

入门参考:从Go中的协程理解串行和并行

soolaugust

Go Concurrency Patterns 七日更 Go 语言

堪称完美!阿里架构师用60个实战案例讲明白了Spring Boot

Java架构追梦

Java 架构 面试 微服务 springboot

2020 微信头像圣诞帽来啦,快给 TA 戴帽子吧~

mghio

圣诞帽 微信头像 圣诞节

世界之书:《麦田里的守望者》与在虚无中创造希望

lidaobing

麦田里的守望者 28天写作

得物(毒)APP,8位抽奖码需求,这不就是产品给我留的数学作业!

小傅哥

Java 小傅哥 编程开发 七日更 数学逻辑

小白干货奇遇记

熊斌

个人成长 七日更

做音视频最好用的几款跨平台框架

anyRTC开发者

flutter uni-app ios android WebRTC

发布会直播技术及业务实践

vivo互联网技术

分布式 服务器 直播技术

Polkadot系列(三)——如何实现共享安全性

QTech

区块链 polkadot 跨链

向我看齐!京东智联云成 2020 TOP100 Summit“技术标兵”

京东科技开发者

DevOps 云原生 数字化

执法办案信息化建设,情报研判管控分析平台搭建解决方案

t13823115967

智慧公安

四币连发交易所系统开发技术

谁告诉你观察者就是发布订阅模式的!抽他!

爱笑的架构师

设计模式 23种设计模式 观察者模式 Java设计模式 七日更

智慧社区综合信息服务平台搭建,智能社区建设解决方案

t13823115967

智慧社区系统开发

数字货币交易所系统开发功能方案

突破程序员基本功的16课

田维常

程序员

使用基于 SpringMVC 的透明 RPC 开发微服务

AI乔治

Java spring 架构 微服务 Spring Cloud

Spring 源码学习 09:refresh 大概流程

程序员小航

spring 源码 源码阅读

OLAP计算引擎怎么选?

数据社

OLAP 七日更

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