Java中迪米特法则是什么
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章给大家分享的是有关Java中迪米特法则是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定义迪米特法则(Law of Demeter, LoD)是1987年秋天由
千家信息网最后更新 2024年11月11日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 ListgetCompanyEmployee(){ 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安全错误
数据库的锁怎样保障安全
学习软件开发初学
数据库中以存在
腾讯轻量级服务器搭建app
博士后论文数据库
计算机网络技术书本中职
虚拟服务器软件
永州网络安全平台登录
古蔺软件开发
在乌班图搭建web服务器数据库
mvc 服务器路径
安装中端服务器价格
中国陨石数据库月亮陨石
labview调用数据库
isc网络安全大会
邮储银行网络安全管理
网络安全管理工作的指导思想
什么是嵌入式数据库有何特点
池云锦互联网科技有限公司
织梦还原数据库没内容
l4d2服务器插件
关系数据库中数据逻辑关系
怎么在路由器中查看网络安全设置
csgo 服务器查看
获取数据库数据显示在页面
三级的网络安全手抄报
网络安全工程师自学方法
学校网络安全教育开展汇报
鸠鸠科技互联网有限公司
2016网络安全论坛
苏州市嵌入式软件开发培训