迪米特法则(LoD)

来源:互联网 发布:超级基因优化液56章 编辑:程序博客网 时间:2024/05/21 09:30

一、概念

如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

二、详细说明

迪米特法则,又叫最少知识原则,一个对象应当对其他对象尽可能少的了解,不和陌生人说话。它首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开。其根本思想,是强调了类之间的松耦合。类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会的对有关系的类造成波及。也就是说,信息的隐藏促进了软件的复用。

三、举例说明

下面的代码在方法体内部依赖了其他类,这严重违反迪米特法则

public class Teacher {     public void commond(GroupLeader groupLeader) 
    {         List<Girl> listGirls = new ArrayList<Girl>();          for (int i = 0; i < 20; i++) 
        {            listGirls.add(new Girl());        }         groupLeader.countGirls(listGirls);    } }
正确的做法为

public class Teacher 
{     public void commond(GroupLeader groupLeader) 
    {        groupLeader.countGirls();    } }public class GroupLeader 
{     private List<Girl> listGirls;     public GroupLeader(List<Girl> _listGirls) 
    {        this.listGirls = _listGirls;    }     public void countGirls() 
    {        System.out.println("女生数量是:" + listGirls.size());    } }
四、一点建议

在运用迪米特法则到系统的设计中时,要注意以下几点:
1.在类的划分上,应当创建弱耦合的类,类与类之间的耦合越弱,就越有利于实现可复用的目标。
2.在类的结构设计上,每个类都应该降低成员的访问权限。
3.在类的设计上,只要有可能,一个类应当设计成不变的类。
4.在对其他类的应用上,一个对象对其他类的对象的应用应该降到最低。
5.尽量限制局部变量的有效范围。

注意:迪米特法则要求类“羞涩”一点,尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private、package-private、protected等访问权限。


参考:http://blog.csdn.net/yuluows/article/details/7082203

                  http://www.cnblogs.com/muzongyan/archive/2010/08/05/1793000.html

原创粉丝点击