继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第6天+迪米特原则:最少知道原则

一起写代码2公众号
关注TA
已关注
手记 34
粉丝 1
获赞 5

课程名称:Java设计模式精讲 Debug方式+内存分析

课程章节:第3章 软件设计七大原则

主讲老师:Geely

课程内容:

迪米特原则:最少知道原则:图片描述

问题1)定义?

一个对象应该对其他对象保持最少的了解。

问题2)作用和优点:

降低类之间的耦合。

问题3)具体体现:强调只和朋友交流,不和陌生人说话?哪些是朋友?哪写不上朋友?

朋友:出现在成员变量,方法的输入,输出参数中的类称为朋友类。
而出现在方法体内部的类不属于朋友类。
也就是说,不要在方法中引入非朋友类和对象。

注意:可以使用依赖注入,引入任意的成员变量,但是迪米特法则是要根据业务调用链,确定哪些是需要引入的成员变量。哪些是不能直接引入的,这个需要根据业务进行确认。
图片描述

问题4)boss 让teamLeader报告一下网站上一共有多少个课程。

版本一:Course不是Boss类的朋友,因为它在方法的内部。本来该TeamLeader类和Course类是朋友的,现在变成了Boss类和Course类是朋友。

/**

  • 业务:
  • boss 让teamLeader报告一下网站上一共有多少个课程。
    */
    public class Boss {
    public void CommandCheckCourse(TeamLeader teamLeader){
    List courseList = new ArrayList();
    for(int i = 0; i<20; i++){
    courseList.add(new Course());
    }
    teamLeader.checkNumberOfCourse(courseList);
    }
    }

public class Course {
}

public class TeamLeader {
public void checkNumberOfCourse(List course){
System.out.println(“课程总数为”+course.size());
}
}

版本二:TeamLeader类和Course类是朋友。符合迪米特法则,最少知道原则。

/**

  • 业务:
  • boss 让teamLeader报告一下网站上一共有多少个课程。
    */
    public class Boss {
    public void CommandCheckCourse(){
    TeamLeader teamLeader = new TeamLeader();
    teamLeader.checkNumberOfCourse();
    }
    }
    public class Course {
    }
    public class TeamLeader {
    public void checkNumberOfCourse(){
    Course course = new Course();
    List courseList = new ArrayList();
    for(int i = 0; i<20; i++){
    courseList.add(new Course());
    }
    System.out.println(“课程总数为”+courseList.size());
    }
    }

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP