迪米特法则~

简介: 迪米特法则~

迪米特法则是面向对象设计中的一个原则,它的目标是减少对象之间的直接依赖关系,它强调一个对象应该尽量减少与其他对象之间的直接交互,只与自己的直接朋友进行通信,(所谓对象之间的朋友关系就是耦合关系,耦合的方式有很多:依赖、关联、组合,聚合等等。我们称出现成员变量,方法参数,方法返回值中的类为直接朋友,而出现在局部变量中的类不是直接朋友),这样可以避免一个对象过度了解其他对象的内部结构,从而减少代码的耦合性和依赖性,提高代码的可维护性,降低系统的复杂性,并且方便进行单元测试和重构。

举例:

我们分别创建student,class,school,student和class之间建立直接朋友关系,school和class之间建立直接朋友关系,而student和school之间并没交互关系,减少了类之间的耦合度

package druidResources;
import java.util.ArrayList;
import java.util.List;
// 学生类
class Student {
    private String name;
    public Student(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}
// 班级类
class Class {
  //实现班级和学生交互
    private List<Student> students;
    public Class() {
        students = new ArrayList<>();
    }
    public void addStudent(Student student) {
        students.add(student);
    }
    public List<Student> getStudents() {
        return students;
    }
}
// 学校类
class School {
  //实现班级和学校交互
    private List<Class> classes;
    public School() {
        classes = new ArrayList<>();
    }
    public void addClass(Class clazz) {
        classes.add(clazz);
    }
    // 获取学校中所有学生的姓名
    public List<String> getAllStudentNames() {
        List<String> names = new ArrayList<>();
        for (Class clazz : classes) {
            for (Student student : clazz.getStudents()) {
                names.add(student.getName());
            }
        }
        return names;
    }
}
public class LawOfDemeter {
    public static void main(String[] args) {
        // 创建学校对象
        School school = new School();
        // 创建班级对象
        Class class1 = new Class();
        Class class2 = new Class();
        // 创建学生对象
        Student student1 = new Student("张三");
        Student student2 = new Student("李四");
        Student student3 = new Student("王五");
        // 添加学生到班级
        class1.addStudent(student1);
        class1.addStudent(student2);
        class2.addStudent(student3);
        // 添加班级到学校
        school.addClass(class1);
        school.addClass(class2);
        // 获取学校中所有学生的姓名
        List<String> names = school.getAllStudentNames();
        // 打印学生姓名
        for (String name : names) {
            System.out.println(name);
        }
    }
}

输出:

张三
李四
王五
相关文章
|
3月前
|
Java
什么是依赖倒置原则
依赖倒置原则(Dependency Inversion Principle, DIP)是面向对象设计中的SOLID原则之一,强调高层模块不应依赖低层模块,双方应依赖于抽象。该原则包含两方面:抽象不依赖细节,细节依赖抽象。这有助于降低耦合度、提高模块化和灵活性。实践中可通过接口定义契约、依赖注入等方式实现。例如,在Java中定义`MessageService`接口及其实现`EmailService`,高层`NotificationService`依赖于`MessageService`接口而非具体实现,从而实现了对扩展开放、对修改关闭的设计目标。
|
算法 Java 数据处理
依赖倒转原则是什么?
依赖倒转原则是什么?
|
设计模式
设计模式——迪米特法则
设计模式——迪米特法则
|
设计模式
依赖倒置原则是干什么的?
依赖倒置原则是干什么的?
|
消息中间件 监控 NoSQL
接口隔离原则介绍
接口隔离原则介绍
267 0
|
XML JSON 数据格式
单一职责原则详解
单一职责原则详解
206 0
|
设计模式 Java
【Java设计模式】迪米特法则的详细介绍
【Java设计模式】迪米特法则的详细介绍
设计模式:单一职责原则,开放封闭原则,依赖倒转原则,理氏代换原则
还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 废话不多说,直接进入正题: 单一职责原则: 按照大话设计模式的解读,所谓单一职责原则是指:就一个类而言,应该仅有一个引起它变化的原因! 如果一个类承担的职责过多,就等于把这些职责耦合在一起,这无形中增加了设计的耦合度。
963 0