写点什么

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

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

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

关注

评论

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

盘点微服务架构下的诸多身份验证方式

API7.ai 技术团队

微服务 身份认证 APISIX

如何用「标准差」度量研发波动

feijieppm

项目管理 研发效能 技术管理 文化 & 方法 效能度量

Java培训机构哪家比较不错

小谷哥

NFTScan:优质 NFT 应具备什么?

NFT Research

区块链 NFT

架构实战营4.1 数据库存储架构随堂练习

西山薄凉

「架构实战营」

2023-01-10:智能机器人要坐专用电梯把货物送到指定地点, 整栋楼只有一部电梯,并且由于容量限制智能机器人只能放下一件货物, 给定K个货物,每个货物都有所在楼层(from)和目的楼层(to),

福大大架构师每日一题

算法 rust Solidity 福大大

每个Java程序员都必须知道的四种负载均衡算法

JAVA旭阳

Java 架构 后端

阿里云连续3年跻身Gartner全球云数据库管理系统领导者象限

云布道师

阿里云

数据治理:数据质量管理策略!

用友BIP

ClassIn:如何打造更稳定的Zabbix监控系统

OceanBase 数据库

oceanbase 数据库·

SeekBar(拖动条)

芯动大师

android SeekBar 拖动条

培训机构与自学的优缺点有哪些

小谷哥

Flink 批作业的运行时自适应执行管控

Apache Flink

大数据 flink 实时计算

LogicFlow自定义业务节点

小鑫同学

前端 vite Vue 3

先行试点,创新改造:中信期货关键业务系统自主可控的实践之路

OceanBase 数据库

JDK结构介绍

Steven

先行“蜀道”, 四川农信核心系统分布式转型

OceanBase 数据库

2022 OceanBase 年度报告|用技术让海量数据的管理和使用更简单!

OceanBase 数据库

数据库 oceanbase

为什么开发者这么看重SQL?看完这些应用场景你就明白了

雨果

sql 数据库管理工具 SQL开发工具

DiT:Transformers 与扩散模型强强联手

Zilliz

AI 算法模型

走进AI图像生成核心技术 - Diffusion

Baihai IDP

人工智能 AI AIGC Diffusion 扩散模型

神经网络基础部件-损失函数详解

嵌入式视觉

激活函数 Relu sigmoid tanh swish激活函数

大数据就业培训班哪家好?

小谷哥

数据可视化图表系列解析——南丁格尔玫瑰图

Data 探险实验室

数据分析 可视化 数据可视化 图表 可视化数据

Camtasia Studio2023免费版本电脑屏幕录制软件

茶色酒

Camtasia Studio2022 Camtasia Studio2023

安信证券资管清算重要业务在原生分布式数据库的创新实践

OceanBase 数据库

数据库 oceanbase

高并发中的atomic

Steven

《PyTorch 深度学习实战》学习笔记 --NumPy(上)

IT蜗壳-Tango

Dubbo-kubernetes 基于 Informer 服务发现优化之路

阿里巴巴中间件

阿里云 Kubernetes 云原生 dubbo

培训班有哪些学习前端开发的方法

小谷哥

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