首先,阐述一下什么叫单一责任。
对一个类(class),如果你想改变它,那么缘由有且仅有一种的话,这就叫单一责任。简单的说,让一个类仅做一件事。如果你有两种(或以上)缘由想改变同一个类,那就意味着你需要把这个类分解为两个(或多个)类了。这个思想跟数据库设计(database design)里的范式(NF, normal form)有异曲同工之妙。
其次,为什么要履行单一责任。
当对一个类针对某个职责去执行一些变更时,如果这个类刚好肩负多重职责的话,那么这些变更将可能影响这个类的其他的职责,而这个显然并不是你想要的。