单一职责原则的定义
鲍勃大叔( Robert C. Martin)这样定义单一职责原则:
A class should have only one reason to change
一个类应该只有一个发生变化的原因
定义非常简洁。然而,使用这一原则却不像看起来那么容易。
这样理解SRP对吗?
记得前一段时间读过一篇批评SRP的文章,大意是说SRP是一个错误的想法,并不能帮助程序员理解高内聚(high cohesion)的概念,并举了一个例子来证明。例子是这样的:
class AwsOcket {
boolean exists() { /* ... */ }
void read(final OutputStream output) { /* ... */ }
void write(final InputStream input) { /* ... */ }