[设计模式] 浅谈单一职责原则
单一职责原则
原则说明: 单一职责原则(Single responsibility principle)规定每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。
为什么要遵守该原则
违反单一职责原则会导致代码的复杂性增加,可读性降低,同时也会增加代码修改的难度。当一个类承担的职责过多时,这个类的复杂性就会增加,这就增加了出错的可能性。
用一个简单的例子说明
假定我们要输出一个日志,定义了一个日志类。
public class Log {
public void getLog() {
// 获取Log
}
public void formatLog() {
// 格式化Log
}
public void printLog() {
// 打印Log
}
}
这个类违反了单一职责原则,因为它有三个职责:获取日志、格式化日志和打印日志。
如果我们需要改变日志的获取方式(或改变日志的格式或打印方式),我们就需要修改这个类。
为了遵守单一职责原则,我们应该将这个类分解为三个类,每个类只负责一项职责。
public class Log {
public void getLog() {
// 获取Log
}
}
public class LogFormatter {
public void formatLog(Log log) {
// 格式化Log
}
}
public class LogPrinter {
public void printLog(Log log) {
// 打印Log
}
}
这样我们就遵守了单一职责,我们的代码就更加模块化,易于理解和维护。