`

什么是Law of Demeter

阅读更多

        今天一如昨日,继续对WebWork进行小打小闹式的研究。在听了Raimundo老大一番醍醐罐顶般的讲解之后,我觉得要理解WebWork(XWork)巧妙的设计,还是得从IoC看起。于是,我开始阅读WebWork官方文档中关于IoC的部分。
        在阅读的过程中,我发现了一个有趣的短语:Law of Demeter。文档对IoC的优势的描述,有这样一条:
        Adheres to Law of Demeter. Some people think this is silly, but in practise I've found it works much better. Each class is coupled to only what it actually uses (and it should never use too much) and no more. This encourages smaller responsibility specific classes which leads to cleaner design.
        意思很好懂,倒是Law of Demeter是一张新面孔。将这张新面孔Google了一把,才发现它原来是一个非常有名的OO系统设计原则,而且跟现在的热门话题AOP还颇有联系。自己真的好孤陋寡闻啊!
        Law of Demeter主要表述的是这样一个原则:一个unit(通常是一个类中的方法)只能拥有尽可能少的其他unit的信息。而另外的一个总结则是:一个方法只能拥有尽可能少有关对象模型的信息。根据如上的总结,在AOP中,将类的方法提取出来,并归纳成一个个Aspect,作为Aspect本身,对于对象模型的信息的了解就得到有效的减少了。否则的话,像日志或者权限控制功能通常都会散布各个类之中,那么对象模型的信息对于方法而言就显露无遗了。
        对于Law of Demeter更为正式的表述如下:对于对象 'O' 中一个方法'M',M应该只能够访问以下对象中的方法:
        1、对象O;
        2、与O直接相关的Component Object;
        3、由方法M创建或者实例化的对象;
        4、作为方法M的参数的对象。

        由于对Law of Demeter还是知之甚少,就不多说了。有兴趣的朋友,可以参考下面的资料。

    [1] Law of Demeter的发源地;
    [2] 一篇很不错的讲述Law of Demeter的文章   

分享到:
评论

相关推荐

    OPLib对象持久层 (源码)

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

    每个程序员都必须遵守的编程原则单页版

    把十几个重要的开发原则整在一张A4纸里,可以打印出来,贴在你旁边,天天看:p 我不要自我重复 提炼原则 保持简单 不要开发你目前用不到的功能 ...笛米特法则(Law of Demeter) 避免过早优化 代码复用 职责分离 拥抱变化

    设计模式总结

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

    面向对象六大设计原则

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

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

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

    面向对象七大原则

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

    设计模式,软件开发者必读

    1.5.6 迪米特法则(LAW OF DEMETER LOD) 10 1.5.7 单一职责原则(SIMPLE RESPONSIBILITY PINCIPLE SRP) 10 创建型模式 11 2.1 SINGLETON单件模式 11 2.1.1 典型的SINGLETON类 11 2.1.2 多线程安全的SINGLETON类 12 ...

    Java设计模式——工厂设计模式

    LoD(迪米特法则,Law of Demeter):只与你直接的朋友通信,而避免和陌生人通信。 核心本质: 实例化对象,用工厂方法代替new操作。 将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实 现类解耦。 ...

    张文钿 Rails Best Practices 幻灯片

    * the Law of Demeter * Use Observer Lesson 4. Migration * Isolating Seed Data * Always add DB index Lesson 5. Controller * Use before_filter Lesson 6. View * Move code into controller ...

    wxpdesignpattern:wxpdesignpattern

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

    Java面向对象程序设计杨晓燕面向对象基本原则和模式.pptx

    单一职责原则和最少知识原则 最少知识原则(Least Knowledge Principle, 简称为LKP)又叫迪米特法则(Law of Demeter,简写为LoD),就是说一个对象应当对其他对象有尽可能少的了解。就像我国古代老子所说的"使民...

Global site tag (gtag.js) - Google Analytics