做相框的网站,图书馆网站建设公司,怎么获得一个免费的域名,网站怎么注册啊小谈设计模式#xff08;12#xff09;—迪米特法则 专栏介绍专栏地址专栏介绍 迪米特法则核心思想这里的“朋友”指当前对象本身以参数形式传入当前对象的对象当前对象的成员变量直接引用的对象目标 Java程序实现程序分析 总结 专栏介绍
专栏地址
link
专栏介绍
主要对目… 小谈设计模式12—迪米特法则 专栏介绍专栏地址专栏介绍 迪米特法则核心思想这里的“朋友”指当前对象本身以参数形式传入当前对象的对象当前对象的成员变量直接引用的对象目标 Java程序实现程序分析 总结 专栏介绍
专栏地址
link
专栏介绍
主要对目前市面上常见的23种设计模式进行逐一分析和总结希望有兴趣的小伙伴们可以看一下会持续更新的。希望各位可以监督我我们一起学习进步加油各位。
迪米特法则
迪米特法则Law of Demeter也被称为最少知识原则Least Knowledge Principle是一种面向对象设计的原则它强调一个对象应该尽量减少与其他对象之间的相互依赖。
核心思想
尽量减少对象之间的相互依赖使对象之间的耦合度降低。具体来说它强调一个对象应该只与其直接的朋友进行交互而不与陌生的对象进行直接交互。
这里的“朋友”指 当前对象本身
一个对象可以调用自身的方法因为它对自身的结构和行为是了解的。
以参数形式传入当前对象的对象
一个对象可以调用作为参数传入的对象的方法因为它对传入的对象的结构和行为是了解的。
当前对象的成员变量直接引用的对象
一个对象可以调用它的成员变量直接引用的对象的方法因为它对成员变量引用的对象的结构和行为是了解的。
目标
降低对象之间的耦合度提高系统的可维护性、可扩展性和可复用性。通过限制对象之间的直接交互减少了对象之间的依赖关系使系统更加灵活、易于修改和测试。
遵循迪米特法则可以使系统的设计更加模块化每个对象只需要关注自身的职责而不需要了解其他对象的内部细节。这样可以降低系统的复杂性提高代码的可读性和可维护性。同时迪米特法则也有助于提高系统的可扩展性因为减少了对象之间的直接依赖新增功能时只需要修改少量的对象即可。
Java程序实现
// 定义一个学生类
class Student {private String name;public Student(String name) {this.name name;}public String getName() {return name;}
}// 定义一个班级类
class Class {private String className;private ListStudent students;public Class(String className, ListStudent students) {this.className className;this.students students;}public String getClassName() {return className;}public ListStudent getStudents() {return students;}
}// 定义一个学校类
class School {private String schoolName;private ListClass classes;public School(String schoolName, ListClass classes) {this.schoolName schoolName;this.classes classes;}public String getSchoolName() {return schoolName;}public ListClass getClasses() {return classes;}
}// 客户端代码
public class Main {public static void main(String[] args) {// 创建学生对象Student student1 new Student(Tom);Student student2 new Student(Jerry);// 创建班级对象ListStudent students new ArrayList();students.add(student1);students.add(student2);Class class1 new Class(Class1, students);// 创建学校对象ListClass classes new ArrayList();classes.add(class1);School school new School(School1, classes);// 输出学校的名称和班级的名称System.out.println(School Name: school.getSchoolName());for (Class c : school.getClasses()) {System.out.println(Class Name: c.getClassName());}// 输出班级中的学生姓名for (Class c : school.getClasses()) {for (Student s : c.getStudents()) {System.out.println(Student Name: s.getName());}}}
}程序分析
学生类、班级类和学校类之间的关系是符合迪米特法则的。学生类只与班级类有直接的关联班级类只与学校类有直接的关联而学生类和学校类之间没有直接的关联。这样可以降低对象之间的耦合度提高系统的灵活性和可维护性。
在客户端代码中我们创建了一个学校对象然后通过学校对象获取班级对象和学生对象并输出它们的信息。通过迪米特法则我们可以看到客户端代码只需要与学校类进行交互而不需要了解班级类和学生类的内部细节这样可以降低客户端代码与其他类的直接依赖使系统更加灵活和易于维护。
总结
迪米特法则强调了对象之间的松耦合设计通过减少对象之间的直接依赖提高系统的灵活性和可维护性。遵循迪米特法则可以使系统更加模块化、可扩展和易于测试。