• 六大设计原则之迪米特法则


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

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

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

    //总公司员工
    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

  • 相关阅读:
    Swift 协议
    Objective C 链式调用
    objective-c 关键字和概念
    如何在Objective-C中实现链式语法?
    _视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途
    Swift静态方法
    Swift静态属性
    objective-c 中代码块(blocks)
    OS笔记047代理传值和block传值
    Objective-C官方文档翻译 Block
  • 原文地址:https://www.cnblogs.com/gudulijia/p/6477989.html
Copyright © 2020-2023  润新知