迪米特法则(LoD)

一、概念

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

二、详细说明

迪米特法则,又叫最少知识原则,一个对象应当对其他对象尽可能少的了解,不和陌生人说话。它首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的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.youkuaiyun.com/yuluows/article/details/7082203

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值