六大设计原则之迪米特法则
定义:一个类和另一个类应该保持最小的了解
问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生变化时,对另一个类影响也越大。
解决方案:尽量降低类与类之间的耦合。
//总公司员工 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
六大设计原则之迪米特法则相关推荐
- 6大设计原则之迪米特法则
迪米特法则的定义 迪米特法则也称为最少知识原则,一个对象应该对其他对象有最少的了解. 通俗的讲,一个类应该对自己需要耦合或调用的类知道的最少,被调用类的内部是如何复杂都和我没关系,我就知道你的这些pu ...
- 【实验】软件设计原则,迪米特法则与开闭原则
(一)实验原理 1.迪米特法则:不要和"陌生人"说话.或只与你的直接朋友通信. 我们称出现成员变量.方法参数.方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友. ...
- 设计原则之六——迪米特法则
以下七种设计原则是软件设计模式尽量遵循的原则,各种原则要求的侧重点不同. 开闭原则 是总纲,它告诉我们要对扩展开放,对修改关闭: 里氏替换原则 告诉我们不要破坏继承体系: 依赖倒置原则 告诉我们要面向 ...
- 设计原则之迪米特法则详解
一.迪米特法则定义 一个对象应当对其它对象有尽可能少的了解,也被成为最少知道原则. 意思就是一个类中只与与它有直接关联的类联系,出现在这个类的成员变量.方法的输入,方法参数的类被成为朋友类,其他无直接 ...
- java设计模式(7):软件设计原则之迪米特法则
迪米特法则又叫最少知识原则. 只和你的直接朋友交谈,不跟"陌生人"说话(Talk only to your immediate friends and not to strange ...
- 设计原则之迪米特法则
迪米特法则(LOD): 要求一个对象应该对其他对象有最少的了解,所以迪米特法则又叫做最少知识原则. 意义: 迪米特法则的意义在于降低类之间的耦合.由于每个对象尽量减少对其他对象的了解,因此,很容易使得 ...
- 六大设计原则之迪米特原则
迪米特原则的定义 迪米特原则(Law of Demeter,LoD),也叫最少知识原则(Low knowledge Principle,LKP): 一个对象应该对其他对象有最少的了解. 通俗的讲:一个 ...
- 六大设计原则(SOLID)
一.SOLID 设计模式的六大原则有: Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substit ...
- 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则
目录 1 单一职责原则 2 开放封闭原则 3 依赖倒置原则 4 里氏代换原则 5 迪米特法则 1 单一职责原则 比如:电脑内存坏了就应该更换内存,不应该更换CPU (内存负责内存.CPU负责CPU) ...
最新文章
- selenium一些基本语句
- 多线程情况下创建连接池
- 自定义错误代码和提示信息
- Blazor带我重玩前端(一)
- 编译安装mysql5.5.39_编译安装MySQL5.5
- java 编程思想 一 第二章(对象)
- 深入浅出Mysql(一)
- think-cell 无法安装怎么解决?
- 【营销学堂】从饥饿营销到口碑营销
- pxe网络安装服务器的部署
- C++类内初始值的初始化形式
- Android音视频通话环境搭建
- Base64加密和解密使用
- Silicon单片机芯片解密
- cad绘制正八边形_软件CAD | 各种“线”工具
- oracle userenv('language'),USERENV()获取Oracle环境信息
- 论文审稿意见太奇葩?NeurIPS 2021:把它曝光出来给人看
- html遍历map,forEach()方法遍历map()方法数组遍历
- 英雄联盟手游登录注册地与服务器不匹配,英雄联盟手游提示Unable to login地区不支持怎么解决 地区不支持解决方法_手心游戏...
- 村庄规划中的产业发展规划
热门文章
- php 腾讯企业邮箱接口,帮助中心 腾讯企业邮箱OpenApi协议
- not null primary key什么意思_为什么我使用了索引,索引却没有生效?
- mysql 存储过程 无限分类,查看新闻/公告--[转帖]mysql存储过程实现的无限级分类,前序遍历树...
- linux++编译线程,用G ++编译多线程代码
- android通讯录上传服务器,Android 实现读取通讯录并上传服务器
- nimbus java_Java:Swing使用Nimbus皮肤
- python 树结构三方包_python第三方库---BeautifulSoup库(搬运)
- mysql 字符串中取整_MySQL取整
- 从python开始学编程pdf 解压密码_从Python开始学编程PDF高清完整版网盘免费分享...
- Mac 读写NTFS硬盘