2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

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

关注

评论

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

AscendC从入门到精通系列(五)调用基于工程开发AscendC算子

zjun

算子 CANN 昇腾 AscendCL Ascend

ATB算子实现原理解读

zjun

CANN Ascend 大模型推理

开源云原生数据仓库 ByConity测试

多啦A梦

ByConity

如何使用Ascend的ATB加速库?

zjun

CANN Ascend 大模型推理

ATB概念之:算子tiling

zjun

CANN 数据切片 Ascend 大模型推理

Ascend推理组件MindIE LLM

zjun

推理模型 Ascend 大模型推理

强大三维模型渲染和动画插件 Video Copilot Element 3D for Mac激活版

小玖_苹果Mac软件

AscendC从入门到精通系列(三)基于自定义算子工程开发AscendC算子

zjun

算子 CANN 昇腾 AscendCL Ascend

Navicat Premium 15 for Mac:强大数据库管理和开发利器

小玖_苹果Mac软件

强大Raw格式图像ps插件Adobe Camera Raw for Mac中文激活

小玖_苹果Mac软件

AscendC从入门到精通系列(四)使用Pybind调用AscendC算子

zjun

算子 CANN 昇腾 AscendCL Ascend

Axure RP 10 for Mac中文激活版:高效原型设计软件

小玖_苹果Mac软件

AIGC对本地配置要求高吗,云桌面如何实现一键镜像?

青椒云桌面

AIGC云桌面 AIGC云电脑 sd云端部署

如何在c++侧编译运行一个aclnn(AOL)算子?

zjun

算子 大模型 CANN 昇腾 Ascend

AscendC从入门到精通系列(一)初步感知AscendC

zjun

算子 大模型 CANN AscendCL Ascend

考核数据管理系统(源码+文档+部署+讲解)

深圳亥时科技

SD云端部署哪个好?适合SD部署的桌面云工作站

青椒云桌面

云桌面 sd云端部署 云工作站

Antares Auto-Tune Pro for Mac(音调校正) 11.0 激活版

小玖_苹果Mac软件

ATB是什么?

zjun

CANN Ascend 大模型推理

智能加氢站站控系统(源码+文档+部署+讲解)

深圳亥时科技

AscendC从入门到精通系列(二)基于Kernel直调开发AscendC算子

zjun

算子 CANN 昇腾 AscendCL Ascend

原生APP外包开发流程

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包公司

Microsoft Remote Desktop for Mac:跨平台远程桌面连接利器

小玖_苹果Mac软件

淘宝图片搜索接口(Taobao.item_search_img)

tbapi

淘宝API接口 淘宝拍立淘接口 淘宝图片搜索商品接口

Microsoft Office LTSC 2021 for Mac:稳定高效的办公软件套件

小玖_苹果Mac软件

NFT市场回暖:蓝筹项目成为复苏主力,空投潮助推价格上涨

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

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