程序设计原则之迪米特原则

程序设计原则之迪米特原则一 什么是迪米特原则迪米特原则也叫最小知道原则 即对其他的类尽量保持最少知道 只关心自己的直接朋友类 而不关心其他的类 直接朋友类 出现在自己的域中 方法入参中 方法出参中的类叫直接朋友类 那些在方法中出现的局部类不叫直接朋友类 二 结合场景分析假设这么一个场景 一个培训机构的老板叫小组领导查看开设的课程数量 老板应该只和小组领导保持直接朋友 而不管课程 直接下发命令给组领导后

一、什么是迪米特原则

迪米特原则也叫最小知道原则,即对其他的类尽量保持最少知道。只关心自己的直接朋友类,而不关心其他的类。

直接朋友类:出现在自己的域中、方法入参中、方法出参中的类叫直接朋友类;那些在方法中出现的局部类不叫直接朋友类。

二、结合场景分析

假设这么一个场景:

一个培训机构的老板叫小组领导查看开设的课程数量。老板应该只和小组领导保持直接朋友,而不管课程,直接下发命令给组领导后只要最终结果,而不管中间过程。

程序设计实例一:

程序设计原则之迪米特原则

程序设计原则之迪米特原则

程序设计原则之迪米特原则

程序设计原则之迪米特原则

类关系如下:

程序设计原则之迪米特原则

从这个类关系可以看出,Boss这个类不仅知道TeamLeader这个类的存在,还要负责创建Course类,按道理Boss类是不应当知道Course类的存在的,在这里违反了迪米特原则。

改进如下:

程序设计原则之迪米特原则

程序设计原则之迪米特原则

程序设计原则之迪米特原则

程序设计原则之迪米特原则

其类图如下:

程序设计原则之迪米特原则

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211648.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:56
下一篇 2026年3月18日 下午9:57


相关推荐

  • 根据eia/tia接线标准,简述双绞线的线序_rj45接线图

    根据eia/tia接线标准,简述双绞线的线序_rj45接线图今日看到一篇文章    〈巧识妙记双绞线〉原文:http://www.szerc.com/blog/more.asp?name=goodchun&id=3791 作者总结的两句口决真的很妙,不愧是工作在教育第一线的人民教师。以前我也自己写了个口诀,是“A绿B橙,中蓝尾褐,边白先中白后”现在看起来真实迂腐可陈。自己在大春老师的口诀上改了改,将双单、单双——双色在单位,单色在双位,即花线在前也总结进

    2025年12月14日
    5
  • 图的五种最短路径算法

    图的五种最短路径算法本文总结了图的几种最短路径算法的实现:深度或广度优先搜索算法,费罗伊德算法,迪杰斯特拉算法,Bellman-Ford算法。1)深度或广度优先搜索算法(解决单源最短路径)从起点开始访问所有深度遍历路径或广度优先路径,则到达终点节点的路径有多条,取其中路径权值最短的一条则为最短路径。下面是核心代码:voiddfs(intcur,intdst){if(minpath<dst)r…

    2022年6月4日
    49
  • idea使用教程

    idea使用教程一 创建 Java 工程第一步 CreateNewPro 创建一个新的工程 ImportProjec 导入一个现有的工程 Open 打开一个已有工程 比如 可以打开 Eclipse 项目 Checkoutfrom 可以通过服务器上的项目地址 checkoutGith 上面项目或其他 Git 托管服务器上的项目 方式一 或者使用这种方式二 模块和项目的概念 IntelliJIDEA 没有类似 Eclipse 的工作空间的概念 Wo

    2026年3月27日
    6
  • FIO详解

    FIO详解fio FlexibleIOTe 安装 a 下载地址 http freshmeat sourceforge net projects fio b 安装两个插件 yuminstallli yuminstallzi c 编译安装 tar xvffio 2 1 10 tar gz cdfio 2 1 10 configure mak

    2026年3月19日
    2
  • java.lang.verifyerror_java.lang.reflect.undeclared

    java.lang.verifyerror_java.lang.reflect.undeclared以前写代码,总免不了编写登陆部分。在获取user的时候,只可能返回一个user实例,或者为null。以前使用以下方法实现。publicUserget(Stringid){Sessionsession=HibernateUtil.getSessionFactory().openSession();Stringhql=”fromUseruwhereu.id=?”;Listlis…

    2026年3月12日
    4
  • java空指针报错_空指针异常是什么意思

    java空指针报错_空指针异常是什么意思Java中任何对象都有可能为空,当我们调用空对象的方法时就会抛出NullPointerException空指针异常,这是一种非常常见的错误类型。我们可以使用若干种方法来避免产生这类异常,使得我们的代码更为健壮。本文将列举这些解决方案,包括传统的空值检测、编程规范、以及使用现代Java语言引入的各类工具来作为辅助。运行时检测最显而易见的方法就是使用if(obj==null)来…

    2025年7月20日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号