设计模式6大原则(5)-得墨忒耳

迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其它对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.

迪米特法则能够简单说成:talk only to your immediate friends。 对于面向OOD来说,又被解释为以下几种方式:一个软件实体应当尽可能少的与其它实体发生相互作用。每个软件单位对其它的单位都仅仅有最少的知识,并且局限于那些与本单位密切相关的软件单位。

迪米特法则的初衷在于降低类之间的耦合。因为每一个类尽量降低对其它类的依赖,因此,非常easy使得系统的功能模块功能独立,相互之间不存在(或非常少有)依赖关系。

迪米特法则不希望类直接建立直接的接触。

假设真的有须要建立联系,也希望能通过它的友元类来转达。因此,应用迪米特法则有可能造成的一个后果就是:系统中存在大量的中介类,这些类之所以存在全然是为了传递类之间的相互调用关系——这在一定程度上添加了系统的复杂度。

有兴趣能够研究一下设计模式的门面模式(Facade)和中介模式(Mediator)。都是迪米特法则应用的样例。

值得一提的是,尽管Ian Holland对计算机科学的贡献也仅限于这一条法则。其它方面的建树不多,可是,这一法则却不只局限于计算机领域,在其它领域也相同适用。

比方。美国人就在航天系统的设计中採用这一法则。

狭义的迪米特法则

假设两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。

假设当中的一个类须要调用还有一个类的某一个方法的话,能够通过第三者转发这个调用。

朋友圈的确定

“朋友”条件:

1)当前对象本身(this)

2)以參量形式传入到当前对象方法中的对象

3)当前对象的实例变量直接引用的对象

4)当前对象的实例变量假设是一个聚集,那么聚集中的元素也都是朋友

5)当前对象所创建的对象

不论什么一个对象,假设满足上面的条件之中的一个。就是当前对象的“朋友”;否则就是“陌生人”。

狭义的迪米特法则的缺点:

在系统里造出大量的小方法。这些方法不过传递间接的调用,与系统的商务逻辑无关。

遵循类之间的迪米特法则会是一个系统的局部设计简化。由于每个局部都不会和远距离的对象有直接的关联。可是,这也会造成系统的不同模块之间的通信效率减少,也会使系统的不同模块之间不easy协调。

门面模式和调停者模式实际上就是迪米特法则的应用。

广义的迪米特法则在类的设计上的体现:

优先考虑将一个类设置成不变类。

尽量减少一个类的訪问权限。

慎重使用Serializable。

尽量减少进入会员。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

时间: 2024-11-13 06:38:49

设计模式6大原则(5)-得墨忒耳的相关文章

设计模式--6大原则--单一职责原则

单一职责原则(Single Responsibility Principle),简称SRP. 定义: There should never be more than one reason for a class to change. 应该有且仅有一个原因引起类的变更. 有时候,开发人员设计接口的时候会有些问题,比如用户的属性和用户的行为被放在一个接口中声明.这就造成了业务对象和业务逻辑被放在了一起,这样就造成了这个接口有两种职责,接口职责不明确,按照SRP的定义就违背了接口的单一职责原则了. 下

设计模式--6大原则--开闭原则

开闭原则(Open Closed Principle) 开闭原则的核心是:对扩展开放,对修改关闭 白话意思就是我们改变一个软件时(比如扩展其他功能),应该通过扩展的方式来达到软件的改变,而不应爱修改原有代码来实现变化 开闭原则算是前5中原则的一个抽象总结,前五种是开闭原则的一些具体实现,所以如果使用开闭原则,其实有点虚,因为它没有一个固定的模式,但是最终保证的是提高程序的复用性.可维护性等要求 要使用这一原则还需要结合着它的思想"对扩展开放,对修改关闭"与其他的五大设计原则根据经验来开

设计模式6大原则

单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障. 解决方案:遵循单一职责原则.分别建立两个类T1.T2,使T1完成职责P1功能,T2完成职责P2功能.这样,当修改类T1时,不会使职责P2发生故障风险:同理,当修

设计模式7大原则

面向对象设计原则 概述 对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一.在面向对象设计中,可维护性的复用是以设计原则为基础的.每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平. 面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则.面向对象设计原则也是我们用于评价一个设计模式的

设计模式 设计模式7大原则

来源:九江网站优化 一.单一职责原则 编码时,无论是方法上,还是类上都应该遵守单一职责原则. 注意事项和细节: 降低类的复杂度,一个类只负责一项职责: 提高类的可读性,可维护性: 降低变更引起风险: 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则:只有类中方法数量足够少,可以在方法级别保持单一职责原则. 二.接口隔离原则 业务端开发时不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小接口上. 三.依赖倒转原则 高层模块不应该依赖低层模块,二者

00_设计模式6大原则

[六大原则总览] 1.单一职责原则 2.里氏替换原则 3.依赖导致原则 4.接口隔离原则 5.迪米特法则 6.开闭原则 [原则一:单一职责原则] 英文全称:Single Responsibility Principle,简称SRP. 要求一个接口或类只有一个原因引起变化,就是一个接口或类只有一个原则,它就负责一件事情. [ 好处 ] * 类的复杂性降低,实现什么职责都有清晰明确的定义: * 可读性提高,复杂性降低. * 可维护性提高. * 变更引起的风险降低.如果接口的定义职责做的很好,一个接口

设计模式-6大原则

1,单一职责原则 每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致. 2, 里氏替换原则 一个子类应该可以替换掉父类并且可以正常工作 3,接口隔离原则 一个接口拥有的行为应该尽可能的小 4,依赖倒置原则 高层模块不该依赖于低层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象. 5,迪米特原则 一个类应该尽量不要知道其他类太多的东西,不要和陌生的类有太多接触. 6, 开-闭原则 对修改关闭,对扩展开放

设计模式--6大原则应用场景通俗版(1)

1> 单一职责原则 这是我们设计程序最常见的设计原则了,比如用户信息,分属性和行为,基础信息属归属性类,执行归行为类或接口,在实际项目中大多也就只有这个地方能用到. 2>里氏替换原则 尽量规避继承关系带来的负面重构影响 几个注意地方: 2.1>类中调用其他类时,尽可能使用其他类的接口或父类,这也是我们经常性的习惯. 2.2>如果子类不能完整实现父类方法或父类的方法在子类发生了二义性,那么断开父子继承关系,改用依赖.聚集.组合的关联关系,通俗点来讲就是子类和父类属性或行为有可能出现了

设计模式之6大原则(5)-迪米特法则

迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话.英文简写为: LoD. 迪米特法则可以简单说成:talk only to your immediate friends. 对于面向OOD来说,又被解释为下面几种方式:一个软件实体应当尽可能少的与其他实体发生相互作用.每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位. 迪米特