写点什么

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

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

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

关注

评论

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

PHPStorm 的使用技巧汇总

baiyutang

9月日更

学生管理系统架构设计文档

紫云

高峰应对记录

编号94530

Spring Boot 2 性能压测 测试发开 高峰应对

项目管理实践篇(二):技术型PM炼成记

后台技术汇

项目管理 管理 引航计划 内容合集 管理领域

springboot文件上传下载实战 ——文件上传,Java入门

Java 程序员 后端

Prometheus 2.23.0 新特性

耳东@Erdong

Prometheus 9月日更

20. 从工业革命到文艺复兴

Databri_AI

人工智能

吴恩达Andrew Ng CNN卷积神经网络 论文等资料汇总 YOLOv5 新版本—改进与评估 易筋 ARTS 打卡 Week 65

John(易筋)

ARTS 打卡计划

架构实战营模块三

WolvesLeader

「架构实战营」

MySQL 从入门到实践,万字详解!

前端下午茶

MySQL 数据库 大前端

云随想三 2B软件的机遇与挑战?

FLASH

云时代 2B软件

springboot文件上传下载实战 ——文件上传(1),想搞定大厂面试官

Java 程序员 后端

神经网络与点

Nydia

Coffee学架构 004 外包学生管理系统的完整架构设计

咖啡

架构设计

【LeetCode】最长递增子序列Java题解

Albert

算法 LeetCode 9月日更

SpringBoot之配置文件,Java开发教程入门

Java 程序员 后端

这些 JS 中强大的操作符,总有几个你没听说过

前端下午茶

JavaScript 代码设计 代码技巧 基础知识

支付宝的沙箱环境配置和使用

Brave

支付宝 支付 9月日更

HarmonyOS 鸿蒙登录页搭建及 Text 文本详解

阿策小和尚

HarmonyOS Android 小菜鸟 引航计划 9月日更

SpringBoot-自动配置-源码解析,做了5年Java

Java 程序员 后端

谈 C++17 里的 Observer 模式 - 3

hedzr

c++ 算法 设计模式 观察者模式 Design Patterns

Linux常用命令

在即

9月日更

架构实战营 - 模块八作业

思梦乐

SpringBoot整合Redis,怎么实现发布-订阅?,一个回答引发热烈讨论

Java 程序员 后端

☕️【Java专题系列】「回顾 RateLimiter」针对于限流器的入门到精通(针对于源码分析介绍)

码界西柚

ratelimiter Guava 9月日更 限流器

架构师训练营 2 期模块三作业

kazeMace

架构实战营

SpringBoot2---指标监控,Java架构师之路

Java 程序员 后端

JavaScript中 6 个reduce()实例

devpoint

reduce 9月日更

前沿·探索·想象力,今年的云栖大会有啥不一样?

阿里巴巴云原生

阿里巴巴 云原生

springboot文件上传下载实战 —— 登录功能,「高并发秒杀

Java 程序员 后端

架构实战营第八模块作业

子豪sirius

架构实战营

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