单一职责原则(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去了");}}
