设计模式-设计原则之迪米特原则

在这里插入图片描述
在这里插入图片描述
例子

假设老板给项目组长下达一个任务,让其去查询课程的数量

代码

public class Course {
}
public class TeamLeader {
    public void checkNumberOfCourses(List<Course> courseList) {
        System.out.println("课程的数量为:" + courseList.size());
    }
}
public class Boss {
    public void commandCheckNumber(TeamLeader teamLeader) {
        List<Course> courseList = new ArrayList<Course>();
        for (int i = 0; i < 20; i++) {
            courseList.add(new Course());
        }
        teamLeader.checkNumberOfCourses(courseList);
    }
}

测试

public class Test {
    public static void main(String[] args) {
        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);
    }
}

在这里插入图片描述
在这里插入图片描述
这部分代码是不符合迪米特原则的,在Boss类中,成员变量,方法的返回值,形参均为“朋友”,而方法内部的局部变量不是朋友,迪米特原则就是强调只和朋友说话,不和陌生人说话,在上述代码中Boss应该只需要项目组长TeamLeader汇报给他一个结果就行了,中间有关于Course的部分不需要知道,修改之后的代码如下:
其他类均不变,只改变Boss类和TeamLeader

public class TeamLeader {
    public void checkNumberOfCourses() {
        List<Course> courseList = new ArrayList<Course>();
        for (int i = 0; i < 20; i++) {
            courseList.add(new Course());
        }
        System.out.println("课程的数量为:" + courseList.size());
    }
}
public class Boss {
    public void commandCheckNumber(TeamLeader teamLeader) {
        teamLeader.checkNumberOfCourses();
    }
}

在这里插入图片描述

发布了110 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40833790/article/details/102329638