软件设计七大原则:(五)迪米特原则
一、迪米特原则简介
- 定义:一个对象应该对其他对象保持最少的了解。又叫最少知道原则。
- 尽量降低类与类之间的耦合
- 优点:降低类之前的耦合
- 强调只和朋友交流,不和陌生人说话
- 什么是朋友类?
朋友类指的是出现在成员变量、方法的输入、输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。
二、代码实现
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指令,然后得到指定结果即可。
*/
软件设计七大原则:(五)迪米特原则相关推荐
- 【学习笔记】慕课网—Java设计模式精讲 第3章 软件设计七大原则-3-6 迪米特原则(最少知道原则)...
/** * 软件设计七大原则-迪米特原则 学习笔记 * @author cnRicky * @date 2018.11.10 */ 迪米特原则(最少知道原则) 一个对象应该对其他对象保持最少的了解.又 ...
- 【设计模式】软件设计七大原则 ( 迪米特原则 | 代码示例 )
文章目录 一.迪米特原则简介 二.迪米特原则代码示例 ( 反面示例 ) 1.经理类 2.员工类 3.商品类 4.测试类 三.迪米特原则代码示例 ( 推荐用法 ) 1.经理类 2.员工类 3.商品类 4 ...
- 设计模式-软件设计七大原则
目录 综述 1.开闭原则 1.1开闭原则的定义 1.2开闭原则的作用 1.3开闭原则的实现方法 2.里氏替换原则 2.1里氏替换原则的定义 2.2里氏替换原则的作用 2.3里氏替换原则的实现方法 3. ...
- 【设计模式】软件设计七大原则
做好自己 软件设计七大原则 开闭原则OCP(Open-Closed Principle) 依赖倒转原则DIP(Dependence Inversion Principle) 单一职责原则SRP(Sin ...
- 软件设计原则之接口隔离原则、合成复用原则、迪米特原则
系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...
- 设计原则之迪米特原则
迪米特原则 Law of Demeter, LOD 迪米特原则定义 迪米特原则也叫最小知识原则(The Least Knowledge Principle).即,每个模块只应该了解那些与它关系密切的模 ...
- 软件设计七大设计原则
单一职责原则 单一职责原则(Single Responsibility Principle, SRP)的定义是:指一个类或者模块应该有且只有一个改变的原因.如果一个类承担的职责过多,就等于把这些职责耦 ...
- 【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
文章目录 一.里氏替换原则定义 二.里氏替换原则定义扩展 三.里氏替换原则引申意义 四.里氏替换原则意义 五.里氏替换原则优点 一.里氏替换原则定义 里氏替换原则定义 : 如果 对每一个 类型为 T1 ...
- 【设计模式】软件设计七大原则 ( 开闭原则 )
文章目录 一.开闭原则简介 二.开闭原则代码示例 1.商品接口 2.普通商品类 3.折扣商品类 4.测试类 一.开闭原则简介 开闭原则 : 定义 : 一个 软件实体 , 类 / 模块 / 函数 , 对 ...
最新文章
- display:inline-block后会有间隙
- centos7修改服务器密码,centos7 上搭建MQTT服务器,修改密码,设置权限并进行测试。...
- php 日历重复_PHP 生成日历
- 【PC工具】Windows下用RaiDrive挂载各种网盘为本地硬盘,挂载Google Drive网盘为本地硬盘使用...
- 不朽传奇-云计算技术背后的那些天才程序员:Qemu的作者法布里斯贝拉
- Python二级笔记(14)
- 为什么 C 语言仍然占据统治地位?
- oracle 数据操作指令,ORACLE数据操作命令
- Puppet 笔记 模板
- html5 2d绘图,HTML5 canvas绘图
- 整数数组的最大子数组
- Windows核心编程_Edit操作
- HighCharts:饼图判断是否选中
- [傅里叶变换及其应用学习笔记] 七. 傅里叶正(反)变换复习
- windows 覆盖图标实现
- sql注入工具、检测及手工注入集合
- 用视频录制软件Captura学习网课
- 干货满满的深度强化学习综述(中文)
- 计算机频繁开机是什么原因,电脑频繁自动重启什么原因
- java制作名片applet程序_【小程序 提取码:krua】壹佰智能名片小程序版本V1.1.45 – 持续更新 无后门...
热门文章
- 笔记本电脑html电视,笔记本电脑连接电视方法推荐 笔记本连接电视用什么线好...
- 高性能 Java 缓存库 — Caffeine
- 智能余额代还款APP软件开发
- 技术人员的赚钱之道-11:钱是什么?钱能生钱吗?
- vs2010 中文版下载地址及可用CDKEY(转自:http://www.ljf.cn/archives/79.aspx)
- nvm node版本管理 npm不是内部或外部命令
- 《未选择的路:The road not taken》
- 十四、MDT 2013 Update 1批量部署-微软WDS/PXE部署及其部署安装实战
- 2021临沭一中高考成绩查询,临沭一中举行高2021届高考励志报告会
- ssd服务器硬盘使用寿命,SSD能用多久在哪看 检测固态硬盘寿命方法