迪米特法则(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<companyemployee> getcompanyemployee(){ list<companyemployee> list = new arraylist<companyemployee>(); for (int i = 0; i < 5; i++) { companyemployee companyemp前期物业管理方案loyee = new companyemployee(); companyemployee.tid("公司员工,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<com.lyj.mode.principle.demeter.dempartemployee> * @exception: * @update: * @updateperson: **/ public list<dempartemployee> getdempartemployee(){ list<dempartemployee> list = new arraylist<dempartemployee>(); for (int i = 0; i < 5; i++) { dempartemployee dempartemployee = new dempartemployee(); dempartemployee.tid("部门员工,id是" + i); list.add(dempartemployee); } return list; } public void pringallemployee(companymanager companymanager){ list<dempartemployee> dempartemployeelist = getdempartemployee(); for (dempartemployee dempartemployee : dempartemployeelist) { system.out.println(dempartemployee.getid()); } system.out.println("--------------------------------"); list<companyemployee> companyemployeelist = companymanager.getcompanyemployee(); for (companyemployee companyemploy七夕节诗ee : 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<com.lyj.mode.principle.demeter.companyemployee> * @exception: * @update: * @updateperson: **/ public list<companyemployee> getcompanyemployee(){ list<companyemployee> list = new arraylist<companyemployee>(); for (int i = 0; i < 5; i++) { companyemployee companyemployee = ne郑州八中w companyemployee(); companyemployee.tid("公司员工,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<companyemployee> 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<com.lyj.mode.principle.demeter.dempartemployee> * @exception: * @update: * @updateperson: **/ public list<dempartemployee> getdempartemployee(){ list<dempartemployee> list = new arraylist<dempartemployee>(); for (int i = 0; i < 5; i++) { dempartemployee dempartemployee = new dempartemployee(); dempartemployee.tid("部门员工,id是" + i); list.add(dempartemployee); } return list; } public void pringallemployee(companymanagernew companymanagernew){ list<dempartemployee> 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设计模式七大原则之迪米特法则详解的详细内容,更多关于java迪米特法则的资料请关注www.887551.com其它相关文章!
本文发布于:2023-04-04 23:00:33,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/b803de03039402b5282b155b3aaca813.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Java设计模式七大原则之迪米特法则详解.doc
本文 PDF 下载地址:Java设计模式七大原则之迪米特法则详解.pdf
留言与评论(共有 0 条评论) |