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

Richard Warburton最近在演讲中讲到,面向对象编程有诸多公认的设计原则,比如SOLID原则,但是转向函数式编程后,许多开发人员就不知道如何运用这些设计技巧了。

\u0026#xD;\n

Mark Seemann在最近的一篇博客中也就同一主题发表了自己的看法,如果你能将SOLID原则发挥到极致,那么函数式编程同样非常吸引人。

\u0026#xD;\n

Richard是伦敦JCP委员会的一员。在演讲中,他认为SOLID原则——由Robert C. Martin在21世纪初期提出——是公认的面向对象编程设计原则之一,并仔细分析了SOLID的五个原则,试图找出与函数式相同或者至少与某一功能相关的蛛丝马迹。

\u0026#xD;\n

根据Richard的经验,尽管许多开发人员不知道在函数式设计中如何使用已有的设计技巧,但是函数式编程往往有助于实现SOLID原则,并且在实现面向对象的封装方面,函数式思维确实能够助你一臂之力。

\u0026#xD;\n

Richard得出的结论是每个SOLID原则与函数式都有对应关系。我们不用放弃那些已有的设计模式;与之相反,通过简化或清理,或者以一种简化方式使用这些已有知识,我们还能改善已有设计模式。

\u0026#xD;\n

Mark是一位软件架构师并兼职独立顾问。以他的经验,SOLID原则可以促成一种设计风格,而且该风格使函数式编程颇有吸引力。

\u0026#xD;\n

当使用SOLID原则中的单一职责原则(SRP)和接口隔离原则(ISP)时,最终的结果是代码库中有很多细粒度接口和类,每个这样的类和接口只有一个方法。

\u0026#xD;\n

所以Mark由此得出结论,如果因为反复使用SOLID原则而导致很多只有一个方法的小类,那么我们可以将函数建模成具有数据的行为,这也可能是转向函数编程语言的机会,如F#语言。

\u0026#xD;\n\u0026#xD;\n

感谢臧秀涛对本文的审校。

\u0026#xD;\n

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(面向对象设计原则与函数式编程)