定义:一个类和另一个类应该保持最小的了解

问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生变化时,对另一个类影响也越大。

解决方案:尽量降低类与类之间的耦合。

//总公司员工
class Employee{private String id;   public void setId(String id){  this.id = id;  }  public String getId(){  return id;  }
}//分公司员工
class SubEmployee{  private String id;  public void setId(String id){  this.id = id;  }  public String getId(){  return id;  }
}  class SubCompanyManager{  public List<SubEmployee> getAllEmployee(){  List<SubEmployee> list = new ArrayList<SubEmployee>();  for(int i=0; i<100; i++){  SubEmployee emp = new SubEmployee();  //为分公司人员按顺序分配一个ID  emp.setId("分公司"+i);  list.add(emp);  }  return list;  }
class CompanyManager{  public List<Employee> getAllEmployee(){  List<Employee> list = new ArrayList<Employee>();  for(int i=0; i<30; i++){  Employee emp = new Employee();  //为总公司人员按顺序分配一个ID  emp.setId("总公司"+i);  list.add(emp);  }  return list;  }  public void printAllEmployee(SubCompanyManager sub){  List<SubEmployee> list1 = sub.getAllEmployee();  for(SubEmployee e:list1){  System.out.println(e.getId());  }  List<Employee> list2 = this.getAllEmployee();  for(Employee e:list2){  System.out.println(e.getId());  }  }
}
}  public class Client{  public static void main(String[] args){  CompanyManager e = new CompanyManager();  e.printAllEmployee(new SubCompanyManager());  }
}  

迪米特法则的初衷是降低类的耦合,由于每个类都减少了不必要的依赖,因此确实可以降低耦合关系。但凡事有个度,虽然可以避免与非直接的类通信,但是要通信,就必然会通过一个“中介”来发生关系,过分的使用迪米特原则,会产生大量的中介和传递类,导致系统复杂度变大,所以采用迪米特法则时要反复权衡,既要做到结构清晰,又要高内聚低耦合。

转载http://blog.csdn.net/zhengzhb/article/details/7296930

转载于:https://www.cnblogs.com/gudulijia/p/6477989.html

六大设计原则之迪米特法则相关推荐

  1. 6大设计原则之迪米特法则

    迪米特法则的定义 迪米特法则也称为最少知识原则,一个对象应该对其他对象有最少的了解. 通俗的讲,一个类应该对自己需要耦合或调用的类知道的最少,被调用类的内部是如何复杂都和我没关系,我就知道你的这些pu ...

  2. 【实验】软件设计原则,迪米特法则与开闭原则

    (一)实验原理 1.迪米特法则:不要和"陌生人"说话.或只与你的直接朋友通信. 我们称出现成员变量.方法参数.方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友. ...

  3. 设计原则之六——迪米特法则

    以下七种设计原则是软件设计模式尽量遵循的原则,各种原则要求的侧重点不同. 开闭原则 是总纲,它告诉我们要对扩展开放,对修改关闭: 里氏替换原则 告诉我们不要破坏继承体系: 依赖倒置原则 告诉我们要面向 ...

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

    一.迪米特法则定义 一个对象应当对其它对象有尽可能少的了解,也被成为最少知道原则. 意思就是一个类中只与与它有直接关联的类联系,出现在这个类的成员变量.方法的输入,方法参数的类被成为朋友类,其他无直接 ...

  5. java设计模式(7):软件设计原则之迪米特法则

    迪米特法则又叫最少知识原则. 只和你的直接朋友交谈,不跟"陌生人"说话(Talk only to your immediate friends and not to strange ...

  6. 设计原则之迪米特法则

    迪米特法则(LOD): 要求一个对象应该对其他对象有最少的了解,所以迪米特法则又叫做最少知识原则. 意义: 迪米特法则的意义在于降低类之间的耦合.由于每个对象尽量减少对其他对象的了解,因此,很容易使得 ...

  7. 六大设计原则之迪米特原则

    迪米特原则的定义 迪米特原则(Law of Demeter,LoD),也叫最少知识原则(Low knowledge Principle,LKP): 一个对象应该对其他对象有最少的了解. 通俗的讲:一个 ...

  8. 六大设计原则(SOLID)

    一.SOLID 设计模式的六大原则有: Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substit ...

  9. 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则

    目录 1 单一职责原则 2 开放封闭原则 3 依赖倒置原则 4 里氏代换原则 5 迪米特法则 1 单一职责原则 比如:电脑内存坏了就应该更换内存,不应该更换CPU (内存负责内存.CPU负责CPU) ...

最新文章

  1. selenium一些基本语句
  2. 多线程情况下创建连接池
  3. 自定义错误代码和提示信息
  4. Blazor带我重玩前端(一)
  5. 编译安装mysql5.5.39_编译安装MySQL5.5
  6. java 编程思想 一 第二章(对象)
  7. 深入浅出Mysql(一)
  8. think-cell 无法安装怎么解决?
  9. 【营销学堂】从饥饿营销到口碑营销
  10. pxe网络安装服务器的部署
  11. C++类内初始值的初始化形式
  12. Android音视频通话环境搭建
  13. Base64加密和解密使用
  14. Silicon单片机芯片解密
  15. cad绘制正八边形_软件CAD | 各种“线”工具
  16. oracle userenv('language'),USERENV()获取Oracle环境信息
  17. 论文审稿意见太奇葩?NeurIPS 2021:把它曝光出来给人看
  18. html遍历map,forEach()方法遍历map()方法数组遍历
  19. 英雄联盟手游登录注册地与服务器不匹配,英雄联盟手游提示Unable to login地区不支持怎么解决 地区不支持解决方法_手心游戏...
  20. 村庄规划中的产业发展规划

热门文章

  1. php 腾讯企业邮箱接口,帮助中心 腾讯企业邮箱OpenApi协议
  2. not null primary key什么意思_为什么我使用了索引,索引却没有生效?
  3. mysql 存储过程 无限分类,查看新闻/公告--[转帖]mysql存储过程实现的无限级分类,前序遍历树...
  4. linux++编译线程,用G ++编译多线程代码
  5. android通讯录上传服务器,Android 实现读取通讯录并上传服务器
  6. nimbus java_Java:Swing使用Nimbus皮肤
  7. python 树结构三方包_python第三方库---BeautifulSoup库(搬运)
  8. mysql 字符串中取整_MySQL取整
  9. 从python开始学编程pdf 解压密码_从Python开始学编程PDF高清完整版网盘免费分享...
  10. Mac 读写NTFS硬盘