单一职责原则(SRP)规定一个类不应该承担多种类型的职责,承担了太多的职责将不利于类的重用
    优点:

    1. 降低类的复杂度
    2. 提高类的可读性
    3. 提高系统的可维护性
    4. 降低变更业务逻辑带来的风险

    所以,在任何情况下,我们都应该遵守单一职责原则,其设计不仅仅适用于类,同样适用于方法

    实现方式:发现类的不同职责,并将之拆分或者封装到不同的模块中

    反例:用户类中同时存在两种职责:玩游戏和学习

    1. class User{
    2. public void learnChinese(){
    3. System.out.println("学生学习语文");
    4. }
    5. public void learnMathematics(){
    6. System.out.println("学生学习数学");
    7. }
    8. public void playLoL(){
    9. System.out.println("学生玩LOL去了");
    10. }
    11. public void playDNF(){
    12. System.out.println("学生玩DNF去了");
    13. }
    14. }

    正例:拆分用户类的职责,使每个类中仅保持一种职责

    1. public static void main(String[] args) {
    2. // 学习
    3. Learn learn = new Learn();
    4. learn.learnChinese(); // 学生学习语文
    5. learn.learnMathematics(); // 学生学习数学
    6. // 玩游戏
    7. PlayGame playGame = new PlayGame();
    8. playGame.playDNF(); // 学生玩DNF去了
    9. playGame.playLoL(); // 学生玩LOL去了
    10. }
    11. // 用户基类
    12. interface User{
    13. }
    14. // 学习
    15. static class Learn implements User{
    16. public void learnChinese(){
    17. System.out.println("学生学习语文");
    18. }
    19. public void learnMathematics(){
    20. System.out.println("学生学习数学");
    21. }
    22. }
    23. // 玩游戏
    24. static class PlayGame implements User{
    25. public void playLoL(){
    26. System.out.println("学生玩LOL去了");
    27. }
    28. public void playDNF(){
    29. System.out.println("学生玩DNF去了");
    30. }
    31. }