• 单一职责原则


    单一职责原则

    定义

    单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。

    简单来说,就是让一个类只干一部分事情,这样可以降低耦合性,提高复用性,提高可读性,降低由变更引起的风险。

    【普通代码】

    package pers.keafmd.accumulate.designmode.singleresponsibility;
    
    /**
     * Keafmd
     *
     * @ClassName: FreshmenSelected
     * @Description: 新生入学
     * @author: 牛哄哄的柯南
     * @date: 2022-06-27 19:39
     */
    public class FreshmenSelected {
    
        public void distributeBooks(){
            System.out.println("分发书籍。。。");
        }
    
        public void allocateDormitory(){
            System.out.println("分配宿舍。。。");
        }
    
        public static void main(String[] args) {
            System.out.println("开始安排新生入学工作:");
            FreshmenSelected freshmenSelected = new FreshmenSelected();
            freshmenSelected.distributeBooks();
            freshmenSelected.allocateDormitory();
            System.out.println("工作结束!");
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    效果:

    开始安排新生入学工作:
    分发书籍。。。
    分配宿舍。。。
    工作结束!
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    【单一职责原则】

    image-20220627150017870

    StudyMembers

    package pers.keafmd.accumulate.designmode.singleresponsibility;
    
    /**
     * Keafmd
     *
     * @ClassName: StudyMembers
     * @Description: 学习委员
     * @author: 牛哄哄的柯南
     * @date: 2022-06-27 19:46
     */
    public class StudyMembers {
    
        public void distributeBooks(){
            System.out.println("学习委员负责:分发书籍。。。");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    LifeCommittee

    package pers.keafmd.accumulate.designmode.singleresponsibility;
    
    /**
     * Keafmd
     *
     * @ClassName: LifeCommittee
     * @Description: 生活委员
     * @author: 牛哄哄的柯南
     * @date: 2022-06-27 19:47
     */
    public class LifeCommittee {
    
        public void allocateDormitory(){
            System.out.println("生活委员负责:分配宿舍。。。");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    ClassMonitor

    package pers.keafmd.accumulate.designmode.singleresponsibility;
    
    /**
     * Keafmd
     *
     * @ClassName: ClassMonitor
     * @Description: 班长
     * @author: 牛哄哄的柯南
     * @date: 2022-06-27 19:46
     */
    public class ClassMonitor {
        private StudyMembers studyMembers;
        private LifeCommittee lifeCommittee;
    
        public ClassMonitor() {
            studyMembers = new StudyMembers();
            lifeCommittee = new LifeCommittee();
        }
    
        public void assignWork(){
            System.out.println("班长开始给不同的班干部分配工作,共同完成新生入学工作:");
            studyMembers.distributeBooks();
            lifeCommittee.allocateDormitory();
            System.out.println("工作结束!");
        }
    
        public static void main(String[] args) {
            System.out.println("开始安排新生入学工作:");
            ClassMonitor classMonitor = new ClassMonitor();
            classMonitor.assignWork();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    效果:

    开始安排新生入学工作:
    班长开始给不同的班干部分配工作,共同完成新生入学工作:
    学习委员负责:分发书籍。。。
    生活委员负责:分配宿舍。。。
    工作结束!
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    以上就是设单一职责原则的全部内容

    版权声明:
    原创博主:牛哄哄的柯南
    博主原文链接:https://keafmd.blog.csdn.net/
    个人博客链接:https://www.keafmd.top/

    看完如果对你有帮助,感谢点击下面的点赞支持!
    [哈哈][抱拳]

    在这里插入图片描述
    加油!

    共同努力!

    Keafmd

  • 相关阅读:
    1398. 购买了产品 A 和产品 B 却没有购买产品 C 的顾客
    hive 慢sql 查询
    全志T3/A40i工业核心板,4核Cortex-A7@1.2GHz,国产化率达100%
    【Java】Java核心API概述
    动态规划:最长公共子序列
    Vue | Vue.js 全家桶 Pinia状态管理
    2022年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
    基于图数据库的元数据血缘关系分析技术研究与实践
    使用 CSS 伪类的attr() 展示 tooltip
    【genius_platform软件平台开发】第八十一讲:ARM Neon指令集一(ARM NEON Intrinsics, SIMD运算, 优化心得)
  • 原文地址:https://blog.csdn.net/weixin_43883917/article/details/125484187