当前位置:  开发笔记 > 编程语言 > 正文

单一责任原则是OOP的规则吗?

如何解决《单一责任原则是OOP的规则吗?》经验,为你挑选了3个好方法。

Stack Overflow问题的答案表明,特定框架违反了简单明了的OOP规则:单一责任原则(SRP).

单一责任原则真的是OOP的规则吗?

我对面向对象编程的定义的理解是"使用对象及其行为来创建软件的范例".这包括以下技术:封装,多态和继承.

现在不要误解我的意思 - 我认为SRP是大多数优秀OO设计的关键,但我觉得有些情况下这个原则可以而且应该被打破(就像数据库规范化规则一样).我积极推动SRP的好处,我的绝大多数代码都遵循这一原则.

但是,它是一个规则,因此暗示它不应该被打破吗?



1> Mark Cidade..:

软件开发中的规则很少(如果有的话)也不例外.有些人认为是没有地方转到但他们错了.

就OOP而言,没有单一的面向对象定义,因此根据您的要求,您将获得一组不同的硬性和软性原则,模式和实践.

OOP的经典概念是将消息发送到其他不透明的对象,并且对象用他们自己内部的知识来解释消息,然后执行某种功能.

SRP是一种软件工程原理,可以应用于类,函数或模块的角色.它有助于某种东西的凝聚力,使其表现得很好,没有不相关的东西悬挂在它上面,或者具有交织和复杂化的多种角色.

即使只有一个责任,它仍然可以从单个功能到一组松散相关的功能,这些功能是共同主题的一部分.只要你避免陪审团操纵一个元素来承担一些事情的责任,它不是主要用于或做一些其他特别的事情来淡化对象的简单性,那么就违反了你想要的任何原则.

但我发现更容易让SRP正确,然后做一些更精细的东西,同样强大.


@Prisoner ZERO:阅读这个问题的答案:[你如何确定如何粗略或细粒度的责任应该是什么时候](http://stackoverflow.com/questions/2455705 /你如何确定 - 如何粗略或细粒度 - 责任 - 应该是什么时候)他提出了一个很好的观点.

2> bruceatk..:

这些规则都不是法律.它们是更多指导方针和最佳实践.有时候遵循"规则"没有意义,你需要做最适合你情况的事情.

不要害怕做你认为正确的事.你可能真的想出了更新更好的规则.



3> Tim Williscr..:

引用巴博萨船长的话:

"其次,你必须是海盗的代码才能申请,而你却不是.第三,代码更像是你所谓的"指导方针",而不是实际的规则...."

引用Jack Sparrow和Gibbs的话."我以为你应该遵守代码." 吉布斯先生:"我们认为它们是更实际的指导方针."

很明显,海盗很清楚这一点.

通过模式运动可以将"规则"理解为"力量"

因此,有一股力量试图让班级承担单一责任.(凝聚)

但也有一股力量试图保持与其他类别的耦合.

与所有设计(不仅仅是代码)一样,答案取决于它.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有