posts - 256, comments - 1314, trackbacks - 41, articles - 8
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

什么是Law of Demeter

Posted on 2004-08-15 14:22 FantasySoft 阅读(500) 评论(0)  编辑 收藏 所属分类: All About SoftThought Ware

        今天一如昨日,继续对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的文章   


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2004-10-14 17:49 编辑过
 
另存  打印
最新IT新闻:
· 56被关一月 危机的是整个视频业
· 李开复:中文搜索是谷歌战略核心
· 《星际争霸2》新图:黑暗圣堂武士Zeratul
· FriendFeed介绍
· 微软在台北发布新色鼠标产品