设计原则之迪米特法则(又叫最少知道原则)

237 阅读1分钟

主要强调只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称之为成员朋友类, 而出现在方法体内部的类不属于朋友类。

Demo:

现在来设计一个权限系统,TeamLeader需要查看目前发布到线上的课程数量。这时候,TeamLeader 要找到员工 Employee 去进行统计,Employee 再把统计结果告诉 TeamLeader.

public class Course {
}

public class Employee {
    public void checkCourseCount(List<Course> courses) {
        System.out.println("目前的课程数量是: " + courses.size());
    }
}


public class TeamLeader {
    public void commandCheckNumber(Employee employee) {
        List<Course> courses = new ArrayList<>();
        courses.add(new Course());
        employee.checkCourseCount(courses);
    }
}

// 测试类

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

以上代码运行结果是正确的,但是真的正确吗?
老大叫一个员工去统计课程数量,结果老大本身与Course类无关啊。

修改:

public class Employee {
    public void checkCourseCount() {
        List<Course> courses = new ArrayList<>();
        courses.add(new Course());
        System.out.println("目前的课程数量是: " + courses.size());
    }
}


public class TeamLeader {
    public void commandCheckNumber(Employee employee) {
        employee.checkCourseCount();
    }
}

老大直接发个指令就能知道结果了...