`
ziwuzu
  • 浏览: 52382 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

得墨忒耳定律(Law of Demeter)

阅读更多

得墨忒耳定律Law of Demeter,缩写LoD)也叫做“最少知识原则”,是一种开发软件的设计原理,特别是面向对象的程序设计,得墨忒耳定律是松耦合的一种特殊情况。该指导原则是1987年末在美国东北大学发明的,该原则可以简单地概括为以下方式之一:

  1. 每个单元对于其他的单元只能拥有有限的知识:只是与当前单元紧密联系的单元;
  2. 每个单元只能和它的朋友交谈:不能和陌生单元交谈;
  3. 只和自己直接的朋友交谈。

很多面向对象程序设计语言用"."表示对象的域的解析算符,因此得墨忒耳定律可以简单地陈述为“只使用一个.算符”。因此,a.b.Method()违反了此定律,而a.Method()不违反此定律。一个简单例子是,人可以命令一条狗行走(walk),但是不应该直接指挥狗的腿行走。应该由狗去指挥控制它的腿如何行走。

 

优点

得墨忒耳定律使得软件更好的可维护性与适应性。因为对象较少依赖其它对象的内部结构,可以改变对象容器(container)而不用改变它的调用者(caller)。

 

以上引自维基百科

 

http://www.dan-manges.com/blog/37

Misunderstanding the Law of Demeter

讲的是不要误用最小知识原则,举了好几个例子,体会到的几点是

1.Thinking again about attribute/getter/setter delegation, it gives classes too much knowledge about other classes. This includes classes that are far away from each other in the domain model

2.Tell, don't ask

感想:

之前看到很多代码特别难以忍受,不知道为什么,现在慢慢知道一点了

分享到:
评论

相关推荐

    C#版得墨忒耳定律重新认识面向对象的封装属性和方法

    得墨忒耳定律,也被称为Law of Demeter(LoD),是面向对象编程中的一个设计原则,它强调了对象间的交互应该保持简单和间接。在C#编程中,这一原则有助于提升代码的可读性、可维护性和解耦性。遵循LoD,我们可以更好...

    得墨meter耳(Demeter)是用于刮擦机芯UI的工具-Golang开发

    demeter demeter是一个工具,可从Calibre库下载您没有的.epub文件。 它通过基于一些聪明的算法建立一个已经看过的书的数据库来做到这一点。 至少,那是主意。 (仅Demeter,Demeter demeter是用于从Calibre库下载您...

    OPLib对象持久层 (源码)

    OPLib是一个基于ADO2.8和COM+技术的for VB6的对象持久层(Persistence Layer)框架,它实现了数据库和中间层的Broker功能,提供OR-Mapping,将关系数据库对象映射到Class,使中间层对数据库“无知”(Law of Demeter)。...

    Aspnet-Demeter.IdentityComponent.zip

    Aspnet-Demeter.IdentityComponent.zip,基于mongodbdemeter.identity component的asp.net core 2.0身份组件,asp.net是一个开源的web框架,用于使用.net构建现代web应用和服务。asp.net创建基于html5、css和...

    分布式光伏工程实训系统Demeter131A系统原理图-案例.dwg

    分布式光伏工程实训系统Demeter131A系统原理图-案例.dwg

    Demeter.4.0

    国外优秀的三维地形引擎,Delta3D使用的就是这个,超棒

    设计模式总结

    设计模式总结、 -- 一,六大设计原则 一,六大设计原则 ... 迪米特法则(Law of Demeter) 也称最小知识原则,一个类应该对自己耦合或者调用的类知道的 越少越好。 开闭原则 对拓展开发,对修改关闭

    Demeter Terrain Engine 超大地形引擎Direct3D 9的源代码

    Demeter Terrain Engine是使用OpenGL的适合低端电脑配置的超大地形引擎,速度非常快,屏幕效果相当好,可以不使用shader。这是转换为Direct3D 9着色引擎的源代码。从ParaEngine中分离出来的。

    demeter:计算欧拉特征变换

    得墨特尔(Demeter)是一个用于计算欧拉特征变换的工具,这在数学和计算机科学领域中具有重要意义。欧拉特征变换是一种统计拓扑性质的方法,它涉及到图论、网络分析以及各种科学计算中。在Jupyter Notebook环境中,...

    JAVA Object-Oriented Design Principles.ppt

    Law of Demeter 是指一个类的方法不应该依赖其他类的结构,除非是它自己的结构。同时,每个方法应该只发送消息给有限的类集合。 坏设计的危害 坏设计可能会导致以下问题: * Rigidity:僵硬性,难以更改,可能会...

    小学英语希腊神话双语小故事奥林波斯山神阅读素材202003021299

    13. 德墨忒耳(Demeter):谷物和丰收女神德墨忒耳关注农业,她是文明的母亲,体现了食物生产的重要性。 这些神祇不仅在奥林波斯山上进行权力斗争,也在人间参与各种事件,他们拥有人类的情感,时而愤怒,时而嫉妒...

    得墨meter耳:NodejsES6RxjsMySQLExpressWebpackReactReduxAntD

    Demeter是一个CMS系统,提供用户体系以及App项目相关内容管理。其中会包括用户模块,项目模块和补充模块等。该系统会长期迭代和维护。 技术栈 描述 ES6 项目代码以ES2015为标准 Rxjs 构建流式应用 MySQL 使用MySQL...

    面向对象六大设计原则

    1、“开-闭”原则(Open-Closed Principle,OCP) 2、里氏替换原则(Liskov Substitution Principle,LSP) 3、依赖倒置原则(Dependence Inversion Principle,DIP) ...6、迪米特法则(Law of Demeter,LoD)

    Demeter:这是一个证明了微服务+微前端架构的可行性的POC

    描述 该存储库的目的是展示在构建大型应用程序中利用Microfrontends + Microservices...得墨meter尔(Demeter)是一个在线购物应用程序,出售极为稀有的物品(Differentiator的商店)。 有限的上下文 -负责管理用户记录

    Demeter-开源

    Demeter的“专注点分离”原则意味着代码按照功能和职责进行划分,每个部分都尽可能地专注于自己的任务,这样可以提高代码的可读性、可维护性和可扩展性。例如,样式文件仅处理页面的外观,脚本处理交互逻辑,而模型...

    demeter:土地利用土地覆被分类和变化检测模型

    Demeter通过提供直接从IAM衍生的网格化土地使用和土地覆被变化(LULCC)产品(在本例中为全球变化分析模型(GCAM)),以ESM常用的多种格式和分辨率,使该过程变得无缝且可重复。 。 Demeter可通过GitHub公开获得,...

    C++设计模式迪米特法则实例

    迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD. 类的设计接口尽量封装完善,让外部直接...

    CharactersinGreekmythology实用PPT课件.pptx

    得墨忒耳(Demeter)则是农业、谷物和丰收女神,她教会人类耕作,赋予大地生机。 雅典娜(Athena)是智慧、战争和纺织女神,她是雅典的保护神,建立了人类的第一个法庭;阿波罗(Apollo)是预言和光明之神,是宙斯...

    demeter:使用Feff和Larch或Ifeffit处理和分析X射线吸收光谱数据

    本文将深入探讨如何使用Demeter这一开源软件来处理和分析X射线吸收光谱数据,同时结合Feff、Larch和Ifeffit这三个工具,提升数据处理效率和准确性。 首先,让我们了解一下Demeter。它是一个用Perl编写的图形用户...

Global site tag (gtag.js) - Google Analytics