面象对象设计6大原则之六:迪米特原则
转载自 面象对象设计6大原则之六:迪米特原则
迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则
定义
一个对象应该对其他对象有最少的了解。
也就是说一个类耦合和调用一个类应该知道的最少,它只关心被耦合和调用的类的公共方法,而被耦合和调用的类如何复杂它并不关心。这在另一程度也说明类方法的最小权限性,不要随意定义public公开方法,你只公开你需要公开的。
迪米特原则对类的低耦合度提出了以下几点要求:
1、只和朋友类交流
类与类之间的交流无需知道内部结构,其内部与其他陌生类打交道我并不关心。
2、朋友类之间的距离
一个类公开的属性和方法越多,其被修改的可能性也会更大,所以在设计一个的时候要权衡利弊,把范围定义在合理的范围内。
所以,迪米特很明显的优点是低耦合度,提高了系统的可维护性和可扩展性。 但另一方面,为了满足这些特性而又不得不增加很多包装的类或方法,这在一定程度上也就提高了类的复杂性。
面象对象设计6大原则之六:迪米特原则相关推荐
- 面象对象设计6大原则之五:依赖倒置原则
转载自 面象对象设计6大原则之五:依赖倒置原则 依赖倒置原则(DIP),The Dependency Inversion Principle 定义 1.高层模块不应该依赖低层模块,两都应该依赖于抽象. ...
- 面象对象设计6大原则之四:接口隔离原则
转载自 面象对象设计6大原则之四:接口隔离原则 接口隔离原则(ISP),The Interface Segregation Principle 定义 客户端不需要强迫依赖那些它们不需要的接口. 类与接 ...
- 面象对象设计6大原则之三:里氏替换原则
转载自 面象对象设计6大原则之三:里氏替换原则 里氏替换原则(LSP),The Liskov Substitution Principle 定义 所有引用基类的地方必须能透明地引用其子类的对象,即子类 ...
- 面象对象设计6大原则之二:开放封闭原则
转载自 面象对象设计6大原则之二:开放封闭原则 开放封闭原则(OCP),The Open Closed Principle 定义 一个软件的实体,包括类.方法.模块.应该对扩展开放,对修改关闭. 也就 ...
- 面象对象设计6大原则之一:单一职责原则
转载自 面象对象设计6大原则之一:单一职责原则 单一职责原则(SRP),The Single Responsibility Principle 定义 一个类的修改只能有一个被修改的原因. 通俗地讲,就 ...
- 软件设计原则之接口隔离原则、合成复用原则、迪米特原则
系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...
- 设计原则之迪米特原则
迪米特原则 Law of Demeter, LOD 迪米特原则定义 迪米特原则也叫最小知识原则(The Least Knowledge Principle).即,每个模块只应该了解那些与它关系密切的模 ...
- 六大设计原则之迪米特原则
迪米特原则的定义 迪米特原则(Law of Demeter,LoD),也叫最少知识原则(Low knowledge Principle,LKP): 一个对象应该对其他对象有最少的了解. 通俗的讲:一个 ...
- 【学习笔记】慕课网—Java设计模式精讲 第3章 软件设计七大原则-3-6 迪米特原则(最少知道原则)...
/** * 软件设计七大原则-迪米特原则 学习笔记 * @author cnRicky * @date 2018.11.10 */ 迪米特原则(最少知道原则) 一个对象应该对其他对象保持最少的了解.又 ...
最新文章
- Android导入工程提示Invalid project description
- Postgis常用函数
- wxWidgets 富文本编辑器示例
- Java8 日期/时间(Date Time)API指南
- 我的一个学生在运维工作中写的自动日志清理脚本程序
- java 找出调用的方法_如何找到用Java调用给定方法的所有方法?
- VMware虚拟机设置(vmtools分辨率)
- linux中配置Java环境
- 3D建模系统blender快捷键
- 甘肃自考计算机技术,甘肃自考计算机与网络技术基础课程考试说明
- C++中四种内存分配方式
- 单例模式及常用使用场景简析
- centos7系统开启ftp服务器,centos7开启ftp服务器
- 微信小程序使用 ECharts
- 玩吧公司,入职后的真实感受
- 伪原创文章特点(高质量的伪原创文章有哪些特点)
- 每天读论语《论语·学而》02
- 记录一次租房经历一(1)
- python中set option_pd.set_option
- 关于计算机论文摘要和引言,论文引言和摘要有什么区别
热门文章
- [JavaWeb-MySQL]MySQL登陆和退出
- [Java基础]Lambda表达式的省略模式
- C++set容器去重法
- HDU - 1811 Rank of Tetris 并查集 + 拓扑序 +me
- P4159 [SCOI2009] 迷路
- cf1504. Travelling Salesman Problem
- Codeforces Round #760 (Div. 3)
- P1852-跳跳棋【思维,差分,二分】
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(8)(1002,1004,1006,1009)
- P5459-[BJOI2016]回转寿司【树状数组】