写点什么

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

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

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

关注

评论

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

N分钟学会分位值的计算方式

眼镜盒子

指标

什么是云渲染?渲染速度有多快?一文告诉你

Finovy Cloud

计算机 云渲染 集群渲染

【Docker 那些事儿】初始 Kubernetes 容器管理平台(下)

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

【刷题记录】17. 电话号码的字母组合

WangNing

7月月更

数据中台建设误区

奔向架构师

数据中台 7月月更

行业洞察|如何更好地建设数据中台?IT和业务要“齐步走”

WorkPlus

传统企业的办公模式正在发生着变化,为什么企业需要数字化办公?

WorkPlus

G1GC算法读书笔记(更新中)

老猎人

Vue Cli Study

程序员海军

vuecli 7月月更

中国经济网:“元宇宙”炙手可热

CECBC

优必选科技眼中的AI机器人时代

优必选科技

AI 机器人

向量化引擎对HTAP的价值与技术思考

OceanBase 数据库

oceanbase

音频的价值、AI Codec 的意义与算法能力的边界丨一期一会 • 音频工程师专场

声网

音频技术 一期一会

无套路、无陷阱、无广告 | 这个免费的即时通讯软件确定不用吗?

WorkPlus

等额本金递增还款/等额本金递减按揭房贷还款计算器

入门小站

工具

京东云分布式链路追踪在金融场景的最佳实践

京东科技开发者

数据库 分布式 京东云 云计算,

元宇宙浪潮震撼来袭,抓住时机,齐心协力

CECBC

振奋人心!元宇宙!下一代互联网的财富风口

CECBC

一个15年ABAP老兵的建议:了解这些基础知识,对ABAP开发有百利而无一害

汪子熙

后台开发 SAP abap Netweaver 7月月更

附答案 | 最强Python面试题之Python基础题(1)

KEY.L

7月月更

API策略因何成为企业数字化转型的制胜法宝?

WorkPlus

linux 上查找包含特定文本的所有文件

入门小站

Linux

在线XML转CSV工具

入门小站

工具

如何在OneFlow中新增算子

OneFlow

深度学习 算子

有return的情况下try catch finally的执行顺序

技术小生

7月月更

Envoy分布式链路追踪

阿泽🧸

envoy 7月月更

Python动态属性有什么用

和牛

测试

快速搭建个人博客网站——Hexo

空城机

Hexo 个人博客 7月月更

Elephant Swap的LaaS方案优势分析,致eToken表现强势

BlockChain先知

网信办严厉查处诱导未成年人参与直播打赏行为:直播打赏行业乱象必须整治

石头IT视角

Ansible项目最佳实践

穿过生命散发芬芳

ansible 7月月更

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