设计原则之迪米特法则详解

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

老师想从学生那里知道假期一共留了几门作业,所以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);
    }
}
遵循法则的代码:
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);
    }
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值