软件架构设计原则--迪米特原则
本专栏内容参考自:咕泡学院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没有任何直接关联了。
另外,学习软件设计原则,不能形成强迫症。碰到业务负责的场景,需要随机应变。
软件架构设计原则--迪米特原则相关推荐
- 【软件架构】软件架构设计常用概念、原则与思想
导读 本文一文总结软件架构设计常用概念.原则与思想,包括面向对象六大原则,DID原则,ACID.CAP.BASE理论,中间层思想,缓存思想等. 软件架构设计常用概念.原则与思想 面向对象设计六大原则 ...
- js的七大设计原则--迪米特原则
一.什么是迪米特原则 迪米特原则也叫最少知道原则,一个类应该对其他对象保持最少的了解.通俗来讲,就是一个类对自己依赖的类知道的越少越好.因为类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另 ...
- 必知必会的设计原则——迪米特原则
概述 迪米特法则(Law of Demeter )又叫做最少知识原则,即一个对象应该对另一个对象有最少的了解. 迪米特法则的目的在于降低类之间的耦合.由于每个类尽量减少对其他类的依赖,因此,很容易使得 ...
- java设计模式之设计原则⑤迪米特原则
定义: (1)一个对象应该对其他对象保持最少的了解.又叫最少知道原则 (2)尽量降低类与类之间的耦合 (3)强调只和朋友交流,不和陌生人说话(意思就是对外部引入的类越少越好). 朋友:指的是出现在成员 ...
- 【设计模式】软件设计七大原则 ( 迪米特原则 | 代码示例 )
文章目录 一.迪米特原则简介 二.迪米特原则代码示例 ( 反面示例 ) 1.经理类 2.员工类 3.商品类 4.测试类 三.迪米特原则代码示例 ( 推荐用法 ) 1.经理类 2.员工类 3.商品类 4 ...
- 设计原则-迪米特原则与合成复用原则
迪米特原则(Law of Demeter LoD) 迪米特原则又叫最少知道原则(Least Knowledge Principle,LKP),这里的最少知道主要是强调,调用者对传入的参数,和接受到的返 ...
- 设计模式六大原则:迪米特原则-带你走进梦幻西游(四)
转载请标明:http://blog.csdn.net/liulongling/article/details/51332685 面向对象其它六大原则 单一职责原则-带你走梦幻西游(一) 依赖倒置原则( ...
- 设计模式七大原则——迪米特原则
1.什么是迪米特原则? 一个对象应该对其他对象保持最少的了解. 类与类关系越密切,耦合度越大. 迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好. ...
- 软件架构设计的6大原则
1. 单一职责原则(Single Responsibility Principle - SRP) 原文:There should never be more than one reason for a ...
最新文章
- 分享apache http服务器设置虚拟主机的方法
- numpy数组基础语法
- [渝粤教育] 中国地质大学 高层建筑施工 复习题
- linux打开文件异常
- table标签+css代码实现选项卡效果(用)
- Java 并发编程之线程池 ExecutorService 接口
- 数据结构与算法分析(六)——C++实现二叉查找树
- 前端工程化开发之yeoman、bower、grunt
- Windows下编写的脚本无法运行?
- 科技圈晒开工福利!小米最直接,腾讯最传统,阿里最豪气,你们家的呢?
- [leetcode]Unique Paths
- js实现调用摄像头拍照功能
- 计算机图形学——Bresenham画线算法
- 单片机音乐倒数计时器c语言,音乐倒数计时器单片机课程设计报告.doc
- lh服务器注册,登不进去的人请看这里:LH服无法登录问题官方解释
- Android开发——错误:远程主机强迫关闭一个现有连接——解决办法
- EFS加密解密----重装系统后
- AutoMapper小结
- selenium + Chrome 滑动验证码破解三之京东 实现某东登录
- 给与和接受反馈的4A原则
热门文章
- Win10搜索框无反应-解决方案
- oracle 递归查询次数,Oracle递归查询的几种方法
- 将js中console.log打印的内容输出保存到txt文件的简单方法
- 面经 | Redis常见面试题
- 绘制玫瑰线及变异玫瑰线
- shell脚本中的执行流控制
- cmd oracle 连接实例_cmd怎么连接oracle数据库
- vue-管道符“ | “(竖杠)的作用
- 移动互联网开发技术教学网站项目研究第六篇
- AI插件开发-AIApplicationSuite模块-应用程序-AIActionManagerSuite模块-动作管理-illustrator插件