zoukankan      html  css  js  c++  java
  • 六大设计原则之迪米特法则

    定义:一个类和另一个类应该保持最小的了解

    问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生变化时,对另一个类影响也越大。

    解决方案:尽量降低类与类之间的耦合。

    //总公司员工
    class Employee{
        private String id;   
        public void setId(String id){  
            this.id = id;  
        }  
        public String getId(){  
            return id;  
        } 
    }
    
    //分公司员工
    class SubEmployee{  
        private String id;  
        public void setId(String id){  
            this.id = id;  
        }  
        public String getId(){  
            return id;  
        }  
    }  
    
    class SubCompanyManager{  
        public List<SubEmployee> getAllEmployee(){  
            List<SubEmployee> list = new ArrayList<SubEmployee>();  
            for(int i=0; i<100; i++){  
                SubEmployee emp = new SubEmployee();  
                //为分公司人员按顺序分配一个ID  
                emp.setId("分公司"+i);  
                list.add(emp);  
            }  
            return list;  
        }  
    class CompanyManager{  
        public List<Employee> getAllEmployee(){  
            List<Employee> list = new ArrayList<Employee>();  
            for(int i=0; i<30; i++){  
                Employee emp = new Employee();  
                //为总公司人员按顺序分配一个ID  
                emp.setId("总公司"+i);  
                list.add(emp);  
            }  
            return list;  
        }  
          
        public void printAllEmployee(SubCompanyManager sub){  
            List<SubEmployee> list1 = sub.getAllEmployee();  
            for(SubEmployee e:list1){  
                System.out.println(e.getId());  
            }  
      
            List<Employee> list2 = this.getAllEmployee();  
            for(Employee e:list2){  
                System.out.println(e.getId());  
            }  
        }  
    }  
    }  
    
    public class Client{  
        public static void main(String[] args){  
            CompanyManager e = new CompanyManager();  
            e.printAllEmployee(new SubCompanyManager());  
        }  
    }  

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

    转载http://blog.csdn.net/zhengzhb/article/details/7296930

  • 相关阅读:
    AFNetwork 作用和用法详解
    ios 常见错误记录
    UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
    AutoLayout
    矩阵的法式
    极小多项式
    对角化
    线性映射
    线性方程组的解
    特征值和特征向量
  • 原文地址:https://www.cnblogs.com/gudulijia/p/6477989.html
Copyright © 2011-2022 走看看