一、迪米特原则简介

  • 定义:一个对象应该对其他对象保持最少的了解。又叫最少知道原则。
  • 尽量降低类与类之间的耦合
  • 优点:降低类之前的耦合
  • 强调只和朋友交流,不和陌生人说话
  • 什么是朋友类?
    朋友类指的是出现在成员变量、方法的输入、输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。

二、代码实现

1.违背迪米特原则的反例

public class Course {}
public class Boss {public void commandCheckNumber(TeamLeader teamLeader) {List<Course> courseList = new ArrayList<>();for (int i = 0; i < 20; i++) {courseList.add(new Course());}teamLeader.checkNumberOfCourses(courseList);}
}
public class TeamLeader {public void checkNumberOfCourses(List<Course> courseList) {List<Course> courseList = new ArrayList<>();for (int i = 0; i < 20; i++) {courseList.add(new Course());}teamLeader.checkNumberOfCourses(courseList);System.out.println("在线课程的数量是:"+courseList.size());}
}
public class DemeterTest {public static void main(String[] args) {Boss boss = new Boss();TeamLeader teamLeader = new TeamLeader();boss.commandCheckNumber(teamLeader);}
}

2.遵循迪米特原则的正确示范

public class Course {}
public class Boss {public void commandCheckNumber(TeamLeader teamLeader) {teamLeader.checkNumberOfCourses();}
}
public class TeamLeader {public void checkNumberOfCourses() {List<Course> courseList = new ArrayList<>();for (int i = 0; i < 20; i++) {courseList.add(new Course());}System.out.println("在线课程的数量是:"+courseList.size());}
}
public class DemeterTest {public static void main(String[] args) {Boss boss = new Boss();TeamLeader teamLeader = new TeamLeader();boss.commandCheckNumber(teamLeader);}
}

三、关于迪米特原则的理解

/**
* 理解起来也比较简单,最重要的是要分清楚哪些类是直接的朋友,
* 哪些类不是朋友。
* 以上面代码为例,Boss不需要关心Course的内容,
* 它只需要给TeamLeader指令,然后得到指定结果即可。
*/

软件设计七大原则:(五)迪米特原则相关推荐

  1. 【学习笔记】慕课网—Java设计模式精讲 第3章 软件设计七大原则-3-6 迪米特原则(最少知道原则)...

    /** * 软件设计七大原则-迪米特原则 学习笔记 * @author cnRicky * @date 2018.11.10 */ 迪米特原则(最少知道原则) 一个对象应该对其他对象保持最少的了解.又 ...

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

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

  3. 设计模式-软件设计七大原则

    目录 综述 1.开闭原则 1.1开闭原则的定义 1.2开闭原则的作用 1.3开闭原则的实现方法 2.里氏替换原则 2.1里氏替换原则的定义 2.2里氏替换原则的作用 2.3里氏替换原则的实现方法 3. ...

  4. 【设计模式】软件设计七大原则

    做好自己 软件设计七大原则 开闭原则OCP(Open-Closed Principle) 依赖倒转原则DIP(Dependence Inversion Principle) 单一职责原则SRP(Sin ...

  5. 软件设计原则之接口隔离原则、合成复用原则、迪米特原则

    系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...

  6. 设计原则之迪米特原则

    迪米特原则 Law of Demeter, LOD 迪米特原则定义 迪米特原则也叫最小知识原则(The Least Knowledge Principle).即,每个模块只应该了解那些与它关系密切的模 ...

  7. 软件设计七大设计原则

    单一职责原则 单一职责原则(Single Responsibility Principle, SRP)的定义是:指一个类或者模块应该有且只有一个改变的原因.如果一个类承担的职责过多,就等于把这些职责耦 ...

  8. 【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )

    文章目录 一.里氏替换原则定义 二.里氏替换原则定义扩展 三.里氏替换原则引申意义 四.里氏替换原则意义 五.里氏替换原则优点 一.里氏替换原则定义 里氏替换原则定义 : 如果 对每一个 类型为 T1 ...

  9. 【设计模式】软件设计七大原则 ( 开闭原则 )

    文章目录 一.开闭原则简介 二.开闭原则代码示例 1.商品接口 2.普通商品类 3.折扣商品类 4.测试类 一.开闭原则简介 开闭原则 : 定义 : 一个 软件实体 , 类 / 模块 / 函数 , 对 ...

最新文章

  1. display:inline-block后会有间隙
  2. centos7修改服务器密码,centos7 上搭建MQTT服务器,修改密码,设置权限并进行测试。...
  3. php 日历重复_PHP 生成日历
  4. 【PC工具】Windows下用RaiDrive挂载各种网盘为本地硬盘,挂载Google Drive网盘为本地硬盘使用...
  5. 不朽传奇-云计算技术背后的那些天才程序员:Qemu的作者法布里斯贝拉
  6. Python二级笔记(14)
  7. 为什么 C 语言仍然占据统治地位?
  8. oracle 数据操作指令,ORACLE数据操作命令
  9. Puppet 笔记 模板
  10. html5 2d绘图,HTML5 canvas绘图
  11. 整数数组的最大子数组
  12. Windows核心编程_Edit操作
  13. HighCharts:饼图判断是否选中
  14. [傅里叶变换及其应用学习笔记] 七. 傅里叶正(反)变换复习
  15. windows 覆盖图标实现
  16. sql注入工具、检测及手工注入集合
  17. 用视频录制软件Captura学习网课
  18. 干货满满的深度强化学习综述(中文)
  19. 计算机频繁开机是什么原因,电脑频繁自动重启什么原因
  20. java制作名片applet程序_【小程序 提取码:krua】壹佰智能名片小程序版本V1.1.45 – 持续更新 无后门...

热门文章

  1. 笔记本电脑html电视,笔记本电脑连接电视方法推荐 笔记本连接电视用什么线好...
  2. 高性能 Java 缓存库 — Caffeine
  3. 智能余额代还款APP软件开发
  4. 技术人员的赚钱之道-11:钱是什么?钱能生钱吗?
  5. vs2010 中文版下载地址及可用CDKEY(转自:http://www.ljf.cn/archives/79.aspx)
  6. nvm node版本管理 npm不是内部或外部命令
  7. 《未选择的路:The road not taken》
  8. 十四、MDT 2013 Update 1批量部署-微软WDS/PXE部署及其部署安装实战
  9. 2021临沭一中高考成绩查询,临沭一中举行高2021届高考励志报告会
  10. ssd服务器硬盘使用寿命,SSD能用多久在哪看 检测固态硬盘寿命方法