• 设计原则 迪米特法则


    概念

    • 定义:一个对象应该对其他对象保持最少的了解,又叫最少知道原则
    • 核心观念:类之间的解耦,尽量降低类与类之间的耦合
    • 优点:降低类之间的耦合
    • 强调:只和朋友(出现在成员变量、方法的输入、输出参数中的类成为成员朋友类,而出现在方法体内部的类不属于朋友类)交流,不和陌生人说话

    编码

    实例

    • BossLeader下达获取课程数的指令
    • Boss.java
    /**
     * @Description Boss
     * @date Dec 7, 2021
     * @version 1.0
     */
    public class Boss {
        /**
         * 课程数量指令
         * @param teamLeader
         */
        public void commandCheckNumber(TeamLeader teamLeader) {
            List<Course> courseList = new ArrayList<>();
    
            for (int i = 0; i < 20; i++) {
                courseList.add(new Course());
            }
    
            teamLeader.checkNumberOfCourses(courseList);
        }
    }
    
    • TeamLeader.java
    /**
     * @Description 项目经理
     * @date Dec 7, 2021
     * @version 1.0
     */
    public class TeamLeader {
        /**
         * 课程数量
         * @param courseList
         */
        public void checkNumberOfCourses(List<Course> courseList) {
            System.out.println("在线课程的数量是:" + courseList.size());
        }
    }
    
    • Course.java
    /**
     * @Description 课程
     * @date Dec 7, 2021
     * @version 1.0
     */
    public class Course {
    }
    
    • Test.java
    /**
     * @Description测试类
     * @date Dec 7, 2021
     * @version 1.0
     */
    public class Test {
        public static void main(String[] args) {
            // TODO 向Leader发送指令获取课程数
            Boss boss = new Boss();
            TeamLeader teamLeader = new TeamLeader();
            boss.commandCheckNumber(teamLeader);
        }
    }
    
    • 输出:
    在线课程的数量是:20
    
    • 类图如下:

    在这里插入图片描述

    • 上述BossLeader下达获取课程数指令代码中根据迪米特法则可以看出,CourseBoss并不属于朋友,BossLeader下指令就可以,并不需要关心Course

    迪米特法则实现

    • Boss.java
    /**
     * @Description Boss
     * @date Dec 7, 2021
     * @version 1.0
     */
    public class Boss {
    
        /**
         * 课程数量指令
         * @param teamLeader
         */
        public void commandCheckNumber(TeamLeader teamLeader) {
            teamLeader.checkNumberOfCourses();
        }
    
    }
    
    • TeamLeader.java
    /**
     * @Description 项目经理
     * @date Dec 7, 2021
     * @version 1.0
     */
    public class TeamLeader {
    
        /**
         * 课程数量
         * @param courseList
         */
        public void checkNumberOfCourses() {
            List<Course> courseList = new ArrayList<>();
    
            for (int i = 0; i < 20; i++) {
                courseList.add(new Course());
            }
    
            System.out.println("在线课程的数量是:" + courseList.size());
        }
    
    }
    
    • 类图变化如下:

    在这里插入图片描述

    源码

    GitHubhttps://github.com/Maggieq8324/design_pattern.git


    - End -
    - 个人学习笔记 -

    以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
    作者:Maggieq8324
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    大数据平台的数据源
    大数据平台的数据采集
    kubernetes入门
    机器学习分类算法
    唱吧DevOps的落地,微服务CI/CD的范本技术解读
    JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎
    MySQL索引及查询优化总结 专题
    玩转spring boot——ajax跨域
    Linux Shell远程执行命令(命令行与脚本方式)
    Android ServiceConnection
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/15655079.html
Copyright © 2020-2023  润新知