zoukankan      html  css  js  c++  java
  • 设计原则 迪米特法则

    概念

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

    编码

    实例

    • 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
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    安卓开发中Theme.AppCompat.Light的解决方法
    一个监听事件监听多个按钮
    onCreate中的savedInstanceState有何具体作用
    [转]Bundle对象的使用
    【转】Android详细的对话框AlertDialog.Builder使用方法
    实现按两次返回键退出应用(利用安卓按后退键引发的函数)
    [转]解决eclipse连接不到genymotion的问题
    随笔记录九 进程和计划任务任务管理
    linux引导过程和服务控制
    上机作业三 账号管理
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/15655079.html
Copyright © 2011-2022 走看看