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

一个 answer到Stack Overflow问题表示,一个特定的框架违反了简单和简单的OOP规则:单一责任原则(SRP)。

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

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

现在不要误会我 – 我相信SRP是最好的OO设计的关键,但我觉得有些情况下这个原则可以而且应该被打破(就像数据库规范化规则)。我积极推动SRP的好处,我的大部分代码遵循这一原则。

但是,这是一个规则,因此意味着它不应该被打破?

在软件开发中很少有规则(如果有的话)也无一例外。有些人认为goto没有地方,但他们错了。

就OOP而言,没有一个面向对象的定义,所以根据你的问题你会得到一套不同的硬,软原则,模式和实践。

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

SRP是一种可应用于类,功能或模块角色的软件工程原理。它有助于一些东西的凝聚力,使其表现良好,没有无关的位悬在其上,或具有交织和复杂的多个角色。

即使只有一个责任,这仍然可以从一个单一的功能到一组松散相关的功能,这是一个共同的主题的一部分。只要你避免陪审团追究某件事情的责任,它不是主要设计的,或者是做一些稀释物体的简单性的其他特殊事情,那么违反任何你想要的原则。

但是我发现更容易获得SRP的正确性,然后做一些更精细的一些同样健壮的事情。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...