软件设计原则-迪米特原则

定义:一个对象应该对其它对象保持最少的了解,又叫最少知道原则。

尽量降低类和类之间的解耦。

优点:降低类之间的耦合。

强调只和朋友交流,不和陌生人说话。这里的朋友指的是,出现在成员变量、方法的输入、输出参数中的类,而出现在方法体内部的类不属于朋友类。

案例:

此处以课程为例,假如老板想让teamleader查一下目前网站上在售的课程数量,V1版本的代码如下

public class Course {
}

public class TeamLeader {
    public void checkNumberOfCourses(List<Course> courseList){
        System.out.println("在线课程的数量是:"+courseList.size());
    }

}
public class Boss {

    public void commandCheckNumber(TeamLeader teamLeader){
        List<Course> courseList = new ArrayList<Course>();
        for(int i =0; i < 20; i++) {
            courseList.add(new Course());
        }
        teamLeader.checkNumberOfCourses(courseList);
    }

}

public class Test {
    public static void main(String[] args) {
        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);

    }
}

 迪米特原则强调类只跟朋友说话,在Boss这个类中,commandCheckNumber方法入参teamLearder是Boss的朋友,方法内部出现了Course类不是Boss的朋友,所以不符合迪米特原则,Boss不需要知道teamLeader的具体实现,不需要跟Course进行交流,只需要下达指令由teamLeader进行具体的实现即可。

V2版本的代码如下

public class TeamLeader {
    public void checkNumberOfCourses(){
        List<Course> courseList = new ArrayList<Course>();
        for(int i = 0 ;i < 20;i++){
            courseList.add(new Course());
        }
        System.out.println("在线课程的数量是:"+courseList.size());
    }

}
public class Boss {

    public void commandCheckNumber(TeamLeader teamLeader){
        teamLeader.checkNumberOfCourses();
    }

}

调整之后的代码,Boss不需要了解具体的实现,只需要给朋友 teamLeader下指令即可,也不需要知道course。

迪米特原则,最重要的是要能区分出哪些类是直接的朋友,哪些类不是朋友,尽量做到弱耦合,提高类的复用率,同时在日常的开发中要适度,否则可能会产生大量的中介类,导致类的结构复杂,带来了维护的难度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值