[OOD设计原则]一. 单一职责原则(SRP)
单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。它的英文缩写是SRP,英文全称是Single Responsibility Principle。
其实单一职责原则的意思就是开发人员经常说的"高内聚、低耦合"。也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。在设计模式中,所有的设计模式都遵循这一原则。
例如:
有一个需要解析bmp文件和png文件,并提取图像数据的功能.
都是解析图像文件,如果把两个解析功能合并在一个类中,那么,假设bmp文件的解析流程已经很优化很稳定了,当修改png解析流程时,这个类被修改过了. 这样子是不是增加了bmp文件解析流程被改错的机会? 所以把应该分成两个类. 就是河水不犯井水,任何一方受污染了,使得另一方受到影响,这是不好的. 但是这种"单一职责"也不是一种绝对的单一,而是一种相对的单一,要从不同的层面去理解. 就上面例子(有一个需要解析bmp文件和png文件的功能),设计一个图像文件解析类,这也是单一功能,对于类的使用者来说,不管解析的是bmp文件还是png文件,最终目的就是拿到"图像数据". 我觉得从类的使用这角度,这个类是单一功能的. 而再这个类的实现角度,就需要把bmp文件解析和png文件的解析分开了. 所以分成bmp解析类和png解析类,图像文件解析类使用这两个类.