OOP 面向对象 七大原则 ---- 单一职责原则(记录)

147 阅读2分钟

一、含义

一个类只负责一个领域的内容,简而言之就是自己的类负责自己的事情,与别的类互不干涉。

二、优点

1、单一职能原则的目的主要是降低类的复杂度。即一个类成者一个方法只负责一项职能,与其无关的职能工作不要冗余地写到一个这个类或者这个方法中。

2、提高类的可读性和可维护性。

3、降低了变更带来的不稳定风险。

4、通常情况下应该在类的层面遵守单一职责原则,只有在类中的方法数量足够少逻辑足够简单的情况下才保持在单方面层遵守单一职责原则。

三、违反单一职责原则 代码

package principle.SRP;

/**
 * @Description 单一职责原则---反例
 * @Author wangzhan
 * @Date 2022/3/7
 */
public class SingleResponsibilityPrincipleCounterexample {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.teach("汉子拼写和识字");
        teacher.teach("加减乘除");

        // 小学生是接收不了这个课程的
        teacher.teach("微积分");
    }
}

/**
 * 老师类
 */
class Teacher{
    public void teach(String content){
        System.out.println("教授小学生" + content);
    }
}

四、对违反的单一职责原则的样例进行修改

package principle.SRP;

/**
 * @Description 单一职责原则:一个类只负责一个领域的内容,简而言之就是自己的类负责自己的事情,与别的类互不干涉。
 *                  优点:
 *                      1、单一职能原则的目的主要是降低类的复杂度。即一个类成者一个方法只负责一项职能,与其无关的职能工作不要冗余地写到一个这个类或者这个方法中。
 *                      2、提高类的可读性和可维护性。
 *                      3、降低了变更带来的不稳定风险。
 *                      4、通常情况下应该在类的层面遵守单一职责原则,只有在类中的方法数量足够少逻辑足够简单的情况下才保持在单方面层遵守单一职责原则。
 *
 * @Author wangzhan
 * @Date 2022/3/7
 */
public class SingleResponsibilityPrinciple {
    public static void main(String[] args) {

        PrimaryTeacher primaryTeacher = new PrimaryTeacher();
        primaryTeacher.teach("汉语拼音和识字");
        primaryTeacher.teach("加减乘除法");

        UniversityTeacher universityTeacher = new UniversityTeacher();
        universityTeacher.teach("微积分");
    }
}

/**
 * 小学老师类
 */
class PrimaryTeacher{
    public void teach(String content){
        System.out.println("教授小学生知识中的:" + content);
    }
}

/**
 * 大学老师类
 */
class UniversityTeacher{
    public void teach(String content){
        System.out.println("教授大学生知识中的:" + content);
    }
}

五、内容对比

image.png