ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

《设计模式》六大原则之一:迪米特法则(2/3)

来源:网络整理     时间:2015-10-24     关键词:面向对象

本篇文章主要介绍了"《设计模式》六大原则之一:迪米特法则",主要涉及到面向对象方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 迪米特原则定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降...

classSubCompanyManager{publicList getAllEmployee(){  
        List list = new ArrayList();  
        for(int i=0; i<100; i++){  
            SubEmployee emp = new SubEmployee();  
            //为分公司人员按顺序分配一个ID  
            emp.setId("分公司"+i);  
            list.add(emp);  
        }  
        returnlist;  
    }  
    public void printEmployee(){  
        List list = this.getAllEmployee();  
        for(SubEmployee e:list){  
            System.out.println(e.getId());  
        }  
    }  
}  

classCompanyManager{publicList getAllEmployee(){  
        List list = new ArrayList();  
        for(int i=0; i<30; i++){  
            Employee emp = new Employee();  
            //为总公司人员按顺序分配一个ID  
            emp.setId("总公司"+i);  
            list.add(emp);  
        }  
        returnlist;  
    }  

    public void printAllEmployee(SubCompanyManager sub){  
        sub.printEmployee();  
        List list2 = this.getAllEmployee();  
        for(Employee e:list2){  
            System.out.println(e.getId());  
        }  
    }  
}  

修改后,为分公司增加了打印人员ID的方法,总公司直接调用来打印,从而避免了与分公司的员工发生耦合。

小结

迪米特法则的初衷是降低类之间的耦合,由于每个类都减少了不必要的依赖,因此的确可以降低耦合关系。但是凡事都有度,虽然可以避免与非直接的类通信,但是要通信,必然会通过一个“中介”来发生联系,例如本例中,总公司就是通过分公司这个“中介”来与分公司的员工发生联系的。过分的使用迪米特原则,会产生大量这样的中介和传递类,导致系统复杂度变大。所以在采用迪米特法则时要反复权衡,既做到结构清晰,又要高内聚低耦合。

在此篇博文下面的评论有这样一句好:

每个对象都有自己的属性和行为,分公司和总公司应分别有打印各自员工ID信息的方法。通过一个CLIENT 来调用。这样的话耦合度会更低。SubCompanyManager和CompanyManager不产生通信。

我觉得挺好的,这样将会使得耦合度更低。博主这样写的原因是重在分析迪米特原则而没有涉及到抽象之类的知识点。

原文地址:http://blog.csdn.net/zhengzhb/article/details/7296930

相关图片

相关文章