LOD 又名: 最少知道原则 05-迪米特法则

1. 背景
类与类之间的关系越密切,耦合度越大,当一个类发生变化时,对另一个类的影响也越大 。
2. 定义
一个类应该对其它类保持最少的了解 。
3. 解决方法
尽量降低类与类之间的耦合 。
4. 迪米特法则的核心
低耦合
5.迪米特法则深究
只与直接的朋友通信 。
每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系 。
耦合的方式很多,依赖、关联、组合、聚合等 。其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友 。也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部 。
6. 模拟业务场景
有一个集团公司,下面有很多分公司,现在要求,总公司打印出所有分公司员工的信息 。剖析:总公司有很多员工(),分公司里也有很多员工();总公司与公司的员工、总公司与分公司、分公司与分公司的员工是直接朋友;总公司和分公司的员工不是直接朋友 。
先看一个违反了迪米特法则的设计方式:
1///2/// 总公司员工类 3///4public class Employee 5{ 6private string id; 7public void setId(string id) 8{ 9this.id = id;10}11public string getId()12{13return id;14}15}
1///2/// 分公司员工类 3///4public class SubEmployee 5{ 6private string id; 7public void setId(string id) 8{ 9this.id = id;10}11public string getId()12{13return id;14}15}

LOD 又名: 最少知道原则  05-迪米特法则

文章插图
1///2/// 分公司管理类 3///4public class SubCompanyManager 5{ 6///7/// 获取分公司员工信息 8///9/// 10public List getAll()11{12List list = new List();13for (int i = 0; i < 5; i++)14{15SubEmployee sel = new SubEmployee();16sel.setId("分公司员工" + i);17list.Add(sel);18}19return list;20}21 22}
1 ///2/// 总公司管理类 3///4public class CompanyManager 5{ 6///7/// 获取总公司员工信息 8///9/// 10public List