【发布时间】:2010-06-08 14:01:09
【问题描述】:
这个首字母缩写词中的第一个字母代表的设计模式是单一职责原则。这是一个引用:
单一责任原则 声明每个对象都应该有一个 单一的责任,那 责任应该完全 由类封装。
在我们开始编码之前,这很简单明了。假设我们有一个定义明确的单一职责的类。要序列化类实例,我们需要向该类添加特殊属性。所以现在这个班级有另一个责任。这不违反 SRP 吗?
让我们看另一个例子——一个接口实现。当我们实现一个接口时,我们只需添加其他职责,比如处理其资源或比较其实例或其他任何事情。
所以我的问题。是否可以严格遵守 SRP?如何做呢?
【问题讨论】:
-
@C.罗斯:我认为这足够具体,不属于社区 Wiki 条目。
-
如果你将一个类的职责定义为“做它被编码做的事情”,那么 SRP 就是自我实现的。所以这真的取决于你如何定义“责任”。 “实现 X 的特性,包括序列化、比较……”我认为这是一个单一的职责。单一职责 =/= 单一功能。
标签: c# .net design-patterns solid-principles