`

Law of Demeter

阅读更多

http://en.wikipedia.org/wiki/Law_of_Demeter

 

it's an important principle, also known as principle of least knowledge.

 

In Object Oriented Programming

 

When applied to object-oriented programs, the Law of Demeter can be more precisely called the “Law of Demeter for Functions/Methods” (LoD-F). In this case, an object A can request a service (call a method) of an object instance B, but object A cannot "reach through" object B to access yet another object, C, to request its services. Doing so would mean that object A implicitly requires greater knowledge of object B's internal structure. Instead, B's interface should be modified if necessary so it can directly serve object A's request, propagating it to any relevant subcomponents. Alternatively, A might have a direct reference to object C and make the request directly to that. If the law is followed, only object B knows its own internal structure.

More formally, the Law of Demeter for functions requires that a method M of an object O may only invoke the methods of the following kinds of objects:

  1. O itself
  2. M' s parameters
  3. any objects created/instantiated within M
  4. O' s direct component objects
  5. a global variable, accessible by O , in the scope of M

In particular, an object should avoid invoking methods of a member object returned by another method. For many modern object oriented languages that use a dot as field identifier, the law can be stated simply as "use only one dot". That is, the code a.b.Method() breaks the law where a.Method() does not. As a simple example, when one wants to walk a dog, it would be folly to command the dog's legs to walk directly; instead one commands the dog and lets it take care of its own legs.

分享到:
评论

相关推荐

    OPLib对象持久层 (源码)

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

    设计模式总结

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

    JAVA Object-Oriented Design Principles.ppt

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

    面向对象七大原则

    5. 迪米特法则(Law of Demeter) 迪米特法则是指一个对象应该对其他对象保持最少的了解。这意味着一个对象不应该知道其他对象的内部细节。迪米特法则可以使代码更清晰、更易维护。 6. 里氏替换原则(Liskov ...

    gtest&cmake 环境搭建.docx

    迪米特原则(law of demeter LOD):尽量降低模块与模块之间的耦合;功能扩展性:满足后期 MT 扩展,满足后期 CI(Continuous Integration)要求。 三、测试用例原则 满足公司编码规范要求;除部分框架外,任何与...

    期末复习题1

    4. **设计模式的原则**:题目中提到了一些面向对象设计的原则,如“不要和陌生人说话”是对迪米特法则(Law of Demeter)的表述,强调对象应仅与其直接朋友通信,减少不必要的依赖;Open-Close原则意味着软件实体应...

    09结构型模式1

    同时,外观模式也是“迪米特法则”(Law of Demeter)的一种实现,减少了类之间的耦合度。 外观模式的应用场景很广泛,例如: - **电源总开关**的例子中,`GeneralSwitchFacade` 是一个外观角色,它控制了灯光、...

    浅谈编程-浅谈编程-浅谈编程

    Closed Principle)、依赖倒置原则(Dependency Inversion Principle)、接口隔离原则(Interface Segregation Principle)、里氏替换原则(Liskov Substitution Principle)、迪米特法则(Law of Demeter)和单一...

    Java设计模式-23种设计模式详解

    6. 迪米特法则(最少知道原则)(Law of Demeter):只与你的直接朋友交谈,不跟“陌生人”说话。一个类对自己依赖的类知道的越少越好。 7. 合成复用原则(Composite Reuse Principle):尽量使用对象组合/聚合,而...

    java设计原则,很实用的,看看

    最后,迪米特法则(Law of Demeter, LoD)又称为最少知道原则,它建议一个对象应当尽量少地了解其直接或间接的依赖对象,以减少类间的关系,增强封装性。这通常表现为“只与朋友交流,不向陌生人问好”,意味着一个...

    设计模式六大原则详解 经典

    迪米特法则(Law of Demeter,LoD),又称最少知识原则,提倡一个对象应该尽量少地了解其他对象的内部细节。遵循这一原则可以减少类之间的交互,降低系统的复杂性,使得修改和扩展变得更容易。 这六大原则共同构成...

    22丨理论八:如何用迪米特法则(LOD)实现“高内聚、松耦合”? 1

    迪米特法则的英文名Law of Demeter,强调了每个对象应该限制其对其他对象的直接访问,以减少间接依赖。在实践中,这意味着对象应仅直接与其直接的朋友交流,而不是通过朋友的朋友。这有助于保持模块边界清晰,降低...

    面向对象的设计原则

    迪米特法则(Law of Demeter, LoD),限制对象之间的交互,减少间接关联,提高内聚性。这些原则共同构成了面向对象设计的基础,有助于构建高质量、易于维护的软件系统。 在实际设计中,遵循这些原则可以帮助我们...

    课后题目三1

    2. **迪米特法则(Law of Demeter, LoD)**:也称为最少知识原则,迪米特法则建议一个对象应该仅与其直接朋友交互,而不是通过陌生的对象。简单来说,就是每个对象应该尽量减少与其他对象的交互,只与直接依赖的对象...

    软件开发设计原则定义.pdf

    4. **最少知识原则(LKP)/迪米特法则(Law of Demeter)**: 这个原则要求对象只与直接关联的对象交互,以减少类之间的耦合度。遵循此原则,可以降低系统的复杂性,提高模块的独立性。例如,一个类不应直接访问...

    JAVA设计模式学习【技术文档】

    - 单一职责原则(Law of Demeter,LoD):一个类应该只有一个引起变化的原因。这有助于保持类的职责单一,使得类更加容易理解和维护。 文档还通过UML图(统一建模语言图),具体解释了每种设计模式的结构,以及它们...

    Java设计模式学习.pdf

    - 迪米特原则(Law of Demeter):一个对象应该对其他对象有最少的了解。 3. 创建型模式和Java对象创建方式: - 简单工厂模式:通过一个工厂类根据输入参数来创建不同对象。 - Java对象创建的方式包括:new...

    云安全 不断变化的监管挑战下有效的审计和密钥管理 - ruby.zip

    迪米特法则(Law of Demeter)在云安全中也占有一定地位,它是面向对象设计的一个原则,提倡降低对象之间的耦合度。在云环境中,遵循迪米特法则可以限制数据的传播,减少潜在的安全风险,提高系统的健壮性。 ...

    面向对象设计原则Java.ppt

    7. **迪米特法则 (Law of Demeter, LoD)**: 迪米特法则也称为“最少知识原则”,建议一个对象应该尽量少地了解其外部对象的细节。这减少了类之间的直接交互,降低耦合,提高系统的可维护性。 这些原则共同构成了...

    99丨总结回顾:在实际软件开发中常用的设计思想、原则和模式1

    设计原则是评价代码质量的重要标准,如SOLID原则、DRY(Don't Repeat Yourself)原则、KISS(Keep It Simple, Stupid)原则、YAGNI(You Aren't Gonna Need It)原则和LOD(Law of Demeter)原则。SOLID原则包括单一...

Global site tag (gtag.js) - Google Analytics