单一职责原则(SRP)规定一个类不应该承担多种类型的职责,承担了太多的职责将不利于类的重用
优点:
- 降低类的复杂度
- 提高类的可读性
- 提高系统的可维护性
- 降低变更业务逻辑带来的风险
所以,在任何情况下,我们都应该遵守单一职责原则,其设计不仅仅适用于类,同样适用于方法
实现方式:发现类的不同职责,并将之拆分或者封装到不同的模块中
反例:用户类中同时存在两种职责:玩游戏和学习
class User{
public void learnChinese(){
System.out.println("学生学习语文");
}
public void learnMathematics(){
System.out.println("学生学习数学");
}
public void playLoL(){
System.out.println("学生玩LOL去了");
}
public void playDNF(){
System.out.println("学生玩DNF去了");
}
}
正例:拆分用户类的职责,使每个类中仅保持一种职责
public static void main(String[] args) {
// 学习
Learn learn = new Learn();
learn.learnChinese(); // 学生学习语文
learn.learnMathematics(); // 学生学习数学
// 玩游戏
PlayGame playGame = new PlayGame();
playGame.playDNF(); // 学生玩DNF去了
playGame.playLoL(); // 学生玩LOL去了
}
// 用户基类
interface User{
}
// 学习
static class Learn implements User{
public void learnChinese(){
System.out.println("学生学习语文");
}
public void learnMathematics(){
System.out.println("学生学习数学");
}
}
// 玩游戏
static class PlayGame implements User{
public void playLoL(){
System.out.println("学生玩LOL去了");
}
public void playDNF(){
System.out.println("学生玩DNF去了");
}
}