当前位置:   article > 正文

设计原则之迪米特法则详解_迪米特法则通俗理解

迪米特法则通俗理解
一、迪米特法则定义
  • 一个对象应当对其它对象有尽可能少的了解,也被成为最少知道原则。
  • 意思就是一个类中只与与它有直接关联的类联系,出现在这个类的成员变量、方法的输入,方法参数的类被成为朋友类,其他无直接关联的类尽量少知道这些类。
  • 所以迪米特法则强调只和最亲的朋友类有联系,对其他类不交流
二、举例理解

老师想从学生那里知道假期一共留了几门作业,所以Teacher–>StudentA 是直接关系,老师调用学生,StudentA–>homework 是直接关系,但老师和课程Teacher–>homework 没有直接关系,所以依据迪米特最少知道原则,Teacher类中不能出现homework类的信息,错误和正确示例代码如下:

不遵循迪米特法则的代码:

Teacher 类中直接注入了与之不相干的Homework类

public class Homework {
}

public class Teacher {
    public void checkHomework(StudentA studentA){
        List<Homework> arrayList = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            arrayList.add(new Homework());
        }
        studentA.checkHomeworkSum(arrayList);
    }
}

public class StudentA {
    public void checkHomeworkSum(List<Homework> homework){
        System.out.println("假期一共留了多少门作业:" + homework.size() + "门");
    }
}

public class DemeterTest {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        StudentA studentA = new StudentA();
        teacher.checkHomework(studentA);
    }
}
  • 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
遵循法则的代码:
public class Homework {
}

public class Teacher {
    public void checkHomework(StudentA studentA){
        studentA.checkHomeworkSum();
    }
}

public class StudentA {
    private List<Homework> arrayList = new ArrayList<>();
    public void checkHomeworkSum(){
        for (int i = 0; i < 5; i++) {
            arrayList.add(new Homework());
        }
        System.out.println("假期一共留了多少门作业:" + arrayList.size() + "门");
    }
}

public class DemeterTest {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        StudentA studentA = new StudentA();
        teacher.checkHomework(studentA);
    }
}

  • 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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/488502
推荐阅读
相关标签
  

闽ICP备14008679号