转载自 面象对象设计6大原则之六:迪米特原则

迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则

定义

一个对象应该对其他对象有最少的了解。

也就是说一个类耦合和调用一个类应该知道的最少,它只关心被耦合和调用的类的公共方法,而被耦合和调用的类如何复杂它并不关心。这在另一程度也说明类方法的最小权限性,不要随意定义public公开方法,你只公开你需要公开的。

迪米特原则对类的低耦合度提出了以下几点要求:

1、只和朋友类交流

类与类之间的交流无需知道内部结构,其内部与其他陌生类打交道我并不关心。

2、朋友类之间的距离

一个类公开的属性和方法越多,其被修改的可能性也会更大,所以在设计一个的时候要权衡利弊,把范围定义在合理的范围内。

所以,迪米特很明显的优点是低耦合度,提高了系统的可维护性和可扩展性。 但另一方面,为了满足这些特性而又不得不增加很多包装的类或方法,这在一定程度上也就提高了类的复杂性。

面象对象设计6大原则之六:迪米特原则相关推荐

  1. 面象对象设计6大原则之五:依赖倒置原则

    转载自 面象对象设计6大原则之五:依赖倒置原则 依赖倒置原则(DIP),The Dependency Inversion Principle 定义 1.高层模块不应该依赖低层模块,两都应该依赖于抽象. ...

  2. 面象对象设计6大原则之四:接口隔离原则

    转载自 面象对象设计6大原则之四:接口隔离原则 接口隔离原则(ISP),The Interface Segregation Principle 定义 客户端不需要强迫依赖那些它们不需要的接口. 类与接 ...

  3. 面象对象设计6大原则之三:里氏替换原则

    转载自 面象对象设计6大原则之三:里氏替换原则 里氏替换原则(LSP),The Liskov Substitution Principle 定义 所有引用基类的地方必须能透明地引用其子类的对象,即子类 ...

  4. 面象对象设计6大原则之二:开放封闭原则

    转载自 面象对象设计6大原则之二:开放封闭原则 开放封闭原则(OCP),The Open Closed Principle 定义 一个软件的实体,包括类.方法.模块.应该对扩展开放,对修改关闭. 也就 ...

  5. 面象对象设计6大原则之一:单一职责原则

    转载自 面象对象设计6大原则之一:单一职责原则 单一职责原则(SRP),The Single Responsibility Principle 定义 一个类的修改只能有一个被修改的原因. 通俗地讲,就 ...

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

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

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

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

  8. 六大设计原则之迪米特原则

    迪米特原则的定义 迪米特原则(Law of Demeter,LoD),也叫最少知识原则(Low knowledge Principle,LKP): 一个对象应该对其他对象有最少的了解. 通俗的讲:一个 ...

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

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

最新文章

  1. Android导入工程提示Invalid project description
  2. Postgis常用函数
  3. wxWidgets 富文本编辑器示例
  4. Java8 日期/时间(Date Time)API指南
  5. 我的一个学生在运维工作中写的自动日志清理脚本程序
  6. java 找出调用的方法_如何找到用Java调用给定方法的所有方法?
  7. VMware虚拟机设置(vmtools分辨率)
  8. linux中配置Java环境
  9. 3D建模系统blender快捷键
  10. 甘肃自考计算机技术,甘肃自考计算机与网络技术基础课程考试说明
  11. C++中四种内存分配方式
  12. 单例模式及常用使用场景简析
  13. centos7系统开启ftp服务器,centos7开启ftp服务器
  14. 微信小程序使用 ECharts
  15. 玩吧公司,入职后的真实感受
  16. 伪原创文章特点(高质量的伪原创文章有哪些特点)
  17. 每天读论语《论语·学而》02
  18. 记录一次租房经历一(1)
  19. python中set option_pd.set_option
  20. 关于计算机论文摘要和引言,论文引言和摘要有什么区别

热门文章

  1. [JavaWeb-MySQL]MySQL登陆和退出
  2. [Java基础]Lambda表达式的省略模式
  3. C++set容器去重法
  4. HDU - 1811 Rank of Tetris 并查集 + 拓扑序 +me
  5. P4159 [SCOI2009] 迷路
  6. cf1504. Travelling Salesman Problem
  7. Codeforces Round #760 (Div. 3)
  8. P1852-跳跳棋【思维,差分,二分】
  9. 2021“MINIEYE杯”中国大学生算法设计超级联赛(8)(1002,1004,1006,1009)
  10. P5459-[BJOI2016]回转寿司【树状数组】