为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

课程名称: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());
    }
    }

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消