Java中迪米特法则是什么
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关Java中迪米特法则是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定义迪米特法则(Law of Demeter, LoD)是1987年秋天由
千家信息网最后更新 2026年11月03日Java中迪米特法则是什么
这篇文章给大家分享的是有关Java中迪米特法则是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
定义
迪米特法则(Law of Demeter, LoD)是1987年秋天由lan holland在美国东北大学一个叫做迪米特的项 目设计提 出的,它要求一个对象应该对其他对象有最少的了解,所以迪米特法则又叫做最少知识原则。
案例
需求
有一个公司,下属有各个部门,现要求打印出公司员工的ID和部门员工的ID
方案一
定义公司员工类
/** * 公司员工 * @author:liyajie * @createTime:2022/2/8 11:52 * @version:1.0 */@Datapublic class CompanyEmployee { private String id;}定义公司管理类
/** * 公司员工管理员 * @author:liyajie * @createTime:2022/2/8 11:51 * @version:1.0 */public class CompanyManager { public List getCompanyEmployee(){ List list = new ArrayList(); for (int i = 0; i < 5; i++) { CompanyEmployee companyEmployee = new CompanyEmployee(); companyEmployee.setId("公司员工,id是" + i); list.add(companyEmployee); } return list; }} 定义部门员工类
/** * 部门员工 * @author:liyajie * @createTime:2022/2/8 11:53 * @version:1.0 */@Datapublic class DempartEmployee { private String id;}定义部门管理类
/** * 部门员工管理员 * @author:liyajie * @createTime:2022/2/8 11:52 * @version:1.0 */public class DepartmentManager { /** * 获取部门员工信息 * @author: liyajie * @date: 2022/2/8 12:29 * @param * @return java.util.List * @exception: * @update: * @updatePerson: **/ public List getDempartEmployee(){ List list = new ArrayList(); for (int i = 0; i < 5; i++) { DempartEmployee dempartEmployee = new DempartEmployee(); dempartEmployee.setId("部门员工,id是" + i); list.add(dempartEmployee); } return list; } public void pringAllEmployee(CompanyManager companyManager){ List dempartEmployeeList = getDempartEmployee(); for (DempartEmployee dempartEmployee : dempartEmployeeList) { System.out.println(dempartEmployee.getId()); } System.out.println("--------------------------------"); List companyEmployeeList = companyManager.getCompanyEmployee(); for (CompanyEmployee companyEmployee : companyEmployeeList) { System.out.println(companyEmployee.getId()); } }} 定义测试类
/** * 测试类 * @author:liyajie * @createTime:2022/2/8 11:53 * @version:1.0 */public class Test1 { public static void main(String[] args) { new DepartmentManager().pringAllEmployee(new CompanyManager()); }}查看结果
方案二
该方案与方案一的区别只有两个地方,具体如下: 修改后的公司管理类,新增打印公司员工id的方法
/** * 公司员工管理员 * @author:liyajie * @createTime:2022/2/8 11:51 * @version:1.0 */public class CompanyManagerNew { /** * 查询公司员工 * @author: liyajie * @date: 2022/2/8 12:42 * @param * @return java.util.List * @exception: * @update: * @updatePerson: **/ public List getCompanyEmployee(){ List list = new ArrayList(); for (int i = 0; i < 5; i++) { CompanyEmployee companyEmployee = new CompanyEmployee(); companyEmployee.setId("公司员工,id是" + i); list.add(companyEmployee); } return list; } /** * 打印公司员工id * @author: liyajie * @date: 2022/2/8 12:41 * @param * @return void * @exception: * @update: * @updatePerson: **/ public void printCompanyEmployee(){ List list = getCompanyEmployee(); for (CompanyEmployee companyEmployee: list) { System.out.println(companyEmployee.getId()); } }} 修改后的部门管理类
/** * 部门员工管理员 * @author:liyajie * @createTime:2022/2/8 11:52 * @version:1.0 */public class DepartmentManagerNew { /** * 获取部门员工信息 * @author: liyajie * @date: 2022/2/8 12:29 * @param * @return java.util.List * @exception: * @update: * @updatePerson: **/ public List getDempartEmployee(){ List list = new ArrayList(); for (int i = 0; i < 5; i++) { DempartEmployee dempartEmployee = new DempartEmployee(); dempartEmployee.setId("部门员工,id是" + i); list.add(dempartEmployee); } return list; } public void pringAllEmployee(CompanyManagerNew companyManagerNew){ List dempartEmployeeList = getDempartEmployee(); for (DempartEmployee dempartEmployee : dempartEmployeeList) { System.out.println(dempartEmployee.getId()); } System.out.println("--------------------------------"); companyManagerNew.printCompanyEmployee(); }} 测试类
/** * 测试类 * @author:liyajie * @createTime:2022/2/8 11:53 * @version:1.0 */public class Test2 { public static void main(String[] args) { new DepartmentManagerNew().pringAllEmployee(new CompanyManagerNew()); }}结果
对比分析
方案一,在部门管理类DepartmentManager的方法pringAllEmployee中打印了公司员工id,使用到了类CompanyEmployee,该类既不是DepartmentManager的内部属性,也不是方法的入参和返回参数,违反了迪米特原则
方案二,在公司管理类中新增打印公司员工id的方法,并对外提供,在部门管理类DepartmentManager的方法pringAllEmployee中进行了调用,符合迪米特原则
感谢各位的阅读!关于"Java中迪米特法则是什么"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
员工
公司
部门
管理
迪米特
方案
方法
法则
管理员
测试
原则
信息
内容
对象
更多
知识
篇文章
结果
不错
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技
上海挚品互联网科技有限公司
上海喔噻互联网科技有限公司
山东特亿宝互联网科技有限公司
互联网科技工作委员会副主任毛军
互联网科技深圳
互联网科技会
互联网科技金融
亿策互联网科技
银优互联网科技有限公司
互联网科技logo
海南科技产业互联网平台
北京大学互联网科技怎么样
互联网行业科技股
长沙茂晟互联网科技有限公司
特约风豹互联网科技为什么扣费
互联网科技数字货币
富国互联网科技002692
萌小萌互联网科技河南有限公司
科技互联网公司两年变化
互联网金融公司科技
奇酷互联网科技
科技创新互联网企业
互联网科技大会
国外互联网科技网站
互联网科技寓意
威龙国际互联网科技公司
湖北辰鑫科技互联网
数字科技和互联网金融哪个好
广东猫王互联网科技有限公司电话