本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删

  迪米特原则(Law of Demeter,LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合度。
  迪米特原则主要强调:只和朋友交流,不与陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以被称为成员朋友类,二出现在方法体内部的类不属于朋友类。
  假设现在来设计一个权限系统,Boss需要查看目前发布到线上的课程数量。这时,Boss要找到Leader去统计,leader再把统计结果告诉boss,还是以代码讲解:
课程Course类:

public class Course {}

leader类:

public class Leader {public void checkNumberCourse(List<Course> courseList){System.out.println("目前已发布的课程数量是:"+courseList.size());}
}

Boss类:

public class Boss {public void commandCheckNumber(Leader leader){//模拟翻页查阅,leader实时统计List<Course> courseList = new ArrayList<>();for (int i = 0; i < 20; i++) {courseList.add(new Course());}leader.checkNumberCourse(courseList);}
}

执行:

public class Main {public static void main(String[] args) {Boss boss = new Boss();Leader leader = new Leader();boss.commandCheckNumber(leader);}
}


  写到这里,功能其实已经实现,代码看上去好像也没什么问题。
  根据迪米特原则,Boss只想要结果,不需要跟Course直接交流。而Leader统计需要引入Course对象。Boss和Course并不是朋友,但好像还有一点关联,让我们再更改一下
Boss类:

public class Boss {public void commandCheckNumber(Leader leader){leader.checkNumberCourse();}
}

Leader类:

public class Leader {public void checkNumberCourse(){List<Course> courseList = new ArrayList<>();for (int i = 0; i < 20; i++) {courseList.add(new Course());}System.out.println("目前已发布的课程数量是:"+courseList.size());}
}

  这时,Boss类已经与Course没有任何直接关联了。
  另外,学习软件设计原则,不能形成强迫症。碰到业务负责的场景,需要随机应变。

软件架构设计原则--迪米特原则相关推荐

  1. 【软件架构】软件架构设计常用概念、原则与思想

    导读 本文一文总结软件架构设计常用概念.原则与思想,包括面向对象六大原则,DID原则,ACID.CAP.BASE理论,中间层思想,缓存思想等. 软件架构设计常用概念.原则与思想 面向对象设计六大原则 ...

  2. js的七大设计原则--迪米特原则

    一.什么是迪米特原则 迪米特原则也叫最少知道原则,一个类应该对其他对象保持最少的了解.通俗来讲,就是一个类对自己依赖的类知道的越少越好.因为类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另 ...

  3. 必知必会的设计原则——迪米特原则

    概述 迪米特法则(Law of Demeter )又叫做最少知识原则,即一个对象应该对另一个对象有最少的了解. 迪米特法则的目的在于降低类之间的耦合.由于每个类尽量减少对其他类的依赖,因此,很容易使得 ...

  4. java设计模式之设计原则⑤迪米特原则

    定义: (1)一个对象应该对其他对象保持最少的了解.又叫最少知道原则 (2)尽量降低类与类之间的耦合 (3)强调只和朋友交流,不和陌生人说话(意思就是对外部引入的类越少越好). 朋友:指的是出现在成员 ...

  5. 【设计模式】软件设计七大原则 ( 迪米特原则 | 代码示例 )

    文章目录 一.迪米特原则简介 二.迪米特原则代码示例 ( 反面示例 ) 1.经理类 2.员工类 3.商品类 4.测试类 三.迪米特原则代码示例 ( 推荐用法 ) 1.经理类 2.员工类 3.商品类 4 ...

  6. 设计原则-迪米特原则与合成复用原则

    迪米特原则(Law of Demeter LoD) 迪米特原则又叫最少知道原则(Least Knowledge Principle,LKP),这里的最少知道主要是强调,调用者对传入的参数,和接受到的返 ...

  7. 设计模式六大原则:迪米特原则-带你走进梦幻西游(四)

    转载请标明:http://blog.csdn.net/liulongling/article/details/51332685 面向对象其它六大原则 单一职责原则-带你走梦幻西游(一) 依赖倒置原则( ...

  8. 设计模式七大原则——迪米特原则

    1.什么是迪米特原则? 一个对象应该对其他对象保持最少的了解. 类与类关系越密切,耦合度越大. 迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好. ...

  9. 软件架构设计的6大原则

    1. 单一职责原则(Single Responsibility Principle - SRP) 原文:There should never be more than one reason for a ...

最新文章

  1. 分享apache http服务器设置虚拟主机的方法
  2. numpy数组基础语法
  3. [渝粤教育] 中国地质大学 高层建筑施工 复习题
  4. linux打开文件异常
  5. table标签+css代码实现选项卡效果(用)
  6. Java 并发编程之线程池 ExecutorService 接口
  7. 数据结构与算法分析(六)——C++实现二叉查找树
  8. 前端工程化开发之yeoman、bower、grunt
  9. Windows下编写的脚本无法运行?
  10. 科技圈晒开工福利!小米最直接,腾讯最传统,阿里最豪气,你们家的呢?
  11. [leetcode]Unique Paths
  12. js实现调用摄像头拍照功能
  13. 计算机图形学——Bresenham画线算法
  14. 单片机音乐倒数计时器c语言,音乐倒数计时器单片机课程设计报告.doc
  15. lh服务器注册,登不进去的人请看这里:LH服无法登录问题官方解释
  16. Android开发——错误:远程主机强迫关闭一个现有连接——解决办法
  17. EFS加密解密----重装系统后
  18. AutoMapper小结
  19. selenium + Chrome 滑动验证码破解三之京东 实现某东登录
  20. 给与和接受反馈的4A原则

热门文章

  1. Win10搜索框无反应-解决方案
  2. oracle 递归查询次数,Oracle递归查询的几种方法
  3. 将js中console.log打印的内容输出保存到txt文件的简单方法
  4. 面经 | Redis常见面试题
  5. 绘制玫瑰线及变异玫瑰线
  6. shell脚本中的执行流控制
  7. cmd oracle 连接实例_cmd怎么连接oracle数据库
  8. vue-管道符“ | “(竖杠)的作用
  9. 移动互联网开发技术教学网站项目研究第六篇
  10. AI插件开发-AIApplicationSuite模块-应用程序-AIActionManagerSuite模块-动作管理-illustrator插件