软件设计七大原则 05 迪米特原则

迪米特原则

一个对象应该对其他对象保持最少的了解,又叫最少知道原则
尽量降低类与类之间的耦合;
强调只和朋友交流,不和陌生人说话;
朋友:出现在成员变量、方法的输入、输出参数中的类称为成员朋友类;出现在方法体内部的类不属于朋友类;

违反迪米特原则示例类图

违反迪米特原则.png

违反迪米特原则示例代码

  • Boss的朋友是TeamLeader,Course出现在方法体中,不是朋友;
  • 不是朋友,那么Boss就不应该和Course有关系;
public class Boss {

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

}

public class TeamLeader {

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

}

public class Course {
}

public class Test {

    public static void main(String[] args) {

        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);

    }
}

符合迪米特原则示例类图

迪米特原则.png

符合迪米特原则示例代码

  • 由于Course不是Boss的朋友,所以Boss只跟朋友TeamLeader打交道;
  • 由TeamLeader和Course打交道;
public class Boss {

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

}

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 Course {
}

public class Test {

    public static void main(String[] args) {

        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);

    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容