写点什么

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

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

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

关注

评论

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

Camtasia实用技巧之时间轴

淋雨

视频剪辑 录屏软件 Camtaisa

原来这就是Java IO啊····

华为云开发者联盟

Java 操作系统 进程 IO流 Java IO

智汇华云|华云数据ArSDN:自主可控的SDN

华云数据

WICC 2021召开在即 清华大学教授将分享AI+网络音视频服务研究

融云 RongCloud

用中国话学this指向(旧知识新讲)

加百利

JavaScript 大前端 this 7月日更

毕业季offer怎么拿?收下这份非典型求职面试指南

华为云开发者联盟

面试 职业规划 求职 毕业季 大学生

WorkPlus高端制造行业数字化解决方案—华晨宝马

BeeWorks

开源 即时通讯 IM 案例分享 汽车

Go 学习笔记之 Slice

架构精进之路

7月日更

面向编程式多云管理服务时代的华为云MCP多云跨云的容器治理与实践

华为云开发者联盟

容器 云原生 华为云 多云 跨云

一名老党员,申请入驻~

正儿八经的仙儿

2021 - iOS开发面试 【字节·百度】 上海区面经与侧重点分享

iOSer

ios 百度 面试 字节 iOS 知识体系

如何利用云原生技术构建现代化应用

阿里巴巴中间件

云计算 阿里云 云原生 中间件

用户体验

Ryan Zheng

pha挖矿/phala挖矿APP系统开发内容

pha分币APP系统开发资料

WorkPlus房地产行业数字化解决方案—富力地产

BeeWorks

开源 远程办公 即时通讯 IM

2021 WAIC | EMQ 映云科技:面向云原生的云边协同物联网解决方案

EMQ映云科技

云原生 云端 端边云协同架构 边云协同

小白也能看懂的Java内存模型

程序猿阿星

JMM Java内存模型 原子性 有序性 可见性;

永续合约交易所搭建,合约平台开发

2021Android面经:算法题+JVM+自定义View

欢喜学安卓

android 程序员 面试 移动开发

Fil和BTC有什么区别?Filecoin挖矿的行情如何?

IPFS BTC fil fil币

Redisson 分布式锁源码 07:公平锁释放

程序员小航

Java redis 源码 分布式锁 redisson

如何对开发团队的人员进行绩效管理?

万事ONES

研发效能 ONES 绩效管理

多项目同时进行如何做好项目管理?

万事ONES

一个完整的项目管理流程包括什么?

万事ONES

项目管理 ONES

FIL矿机多少钱一台 ?FIL挖矿成本是多少?

手写链表之LinkedList源码分析

Ayue、

数据结构

10年阿里开发架构师经验分享:掌握这个提升路径

欢喜学安卓

android 程序员 面试 移动开发

互斥锁Mutex:鸿蒙轻内核中处理临界资源独占的“法官”

华为云开发者联盟

鸿蒙 OpenHarmony 鸿蒙轻内核 互斥锁Mutex 临界资源

CODING 带你看腾讯新闻 7 日 DevOps 实践

CODING DevOps

DevOps CODING 腾讯新闻

GIS可视化框架:更便捷的地图数据可视化工具

鲸品堂

GIS 可视化 应用场景

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