软件设计原则:迪米特法则

2023-05-16

一、定义

迪米特法则要求一个对象应该对其他对象有最少的了解,所以又叫做最少知识原则

二、法则内容:

1、不该有直接依赖关系的类之间,不要有依赖:

即,不和陌生人说话,每个模块只和自己的朋友“说话”(talk),不和陌生人“说话”(talk)。
例:人——咖啡机——咖啡中,制作咖啡的加水、加咖啡豆步骤全部让咖啡机自己完成,不要对人暴露,减少间接依赖。

2、有依赖关系的类之间,尽量只依赖必要的接口(“有限知识”):

即,要求减少对朋友的了解。具体的实现方法是减少一个类对外暴露的Public方法或数据。
例:数据访问提供get、set接口,做到数据修改,内部完全控制感知。

三、目的:

1、实现高内聚: 降低类之间的耦合,由于每个对象应该尽量减少对其他对象的了解,因此,很容易使得系统的功能模块独立,相互之间不存在或者存在很少的依赖关系
2、实现低耦合: 即使两个类有依赖关系,一个类的代码改动也不会或者很少导致依赖类的代码改动

四、参考资料:

1、迪米特法则的典型应用是什么?
2、Java设计模式之迪米特法则
3、迪米特法则

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件设计原则:迪米特法则 的相关文章

  • 【进阶】"结构体嵌入共联体"在协议解析中的神操作!

    1 聊一聊 34 I was alone but not lonely 34 今天的文章话题引出来自bug技术交流群 xff0c 主要是想把这种协议解析和设计的方式分享给大家 xff01 2 正文部分 1 话题引出 bug技术交流群一个小哥
  • Linux中模拟GET、POST请求

    1 概述 在Linux系统中 xff0c 可以利用命令来模拟HTTP请求中的GET POST PUT等请求 xff0c 本文将阐述基于curl命令来模拟GET与POST请求 xff0c PUT DELETE等请求与POST类似 xff0c
  • yolo自带标注工具yolo_mark下载及使用说明

    官网写的比较详细 xff0c 下载参考 https github com AlexeyAB Yolo mark 双击运行windows命令脚本 xff0c 而不是exe 将要标注的样本路径 xff0c 写入train txt文件中 上面这个
  • C++语法(二十)常函数、常对象

    1 常函数 常函数无法修改成员变量 xff0c 除非这个成员变量用mutable修饰了 include lt iostream gt using namespace std class Person public void change c
  • rplidar_ros 报错:can‘t bind 和Operation Time Out的解决

    我使用的思岚A2的雷达在ros下运行 1 can t bind无法连接的错误 xff0c 一种是设备号不匹配引起的错误 xff0c 首先可以使用ll dev grep ttyUSB查看一下设备的dev号 xff0c 再检查一下rplidar
  • 串口通信与网络通信

    上一篇文章记录了使用C Winform开发串口通讯的上位机软件 xff0c 而笔者在整个职业经历中开发得较多的还是网络通讯软件 xff0c 通过以太网TCP IP UDP协议实现不同服务器应用程序之间数据传送与接收 xff1b 而随着公司业
  • Unity URP自学笔记四 ShaderGraph

    在ShaderGraph中自定义光照计算 xff0c 主要需要获取光照的颜色和方向 xff0c 这些需要自己通过脚本来获取 例如通过CustomFunction结点来处理 xff1a 下面创建了一个半兰伯特SubGraph xff0c 便于
  • [笔记]STM32基于HAL库实现STM32串口中断接收数据

    这里使用USART1串口 usart c中添加 xff08 1 xff09 添加全局变量 uint8 t USART1 Buff 100 61 0 接收帧缓存 xff0c 自己定义大小 uint8 t USART1 STA 61 0 boo
  • matlab--UDP发送接收

    m函数中UDP接收和发送 接收 ipA 192 168 0 5 portA 8080 ipB 192 168 0 3 portB 8080 handles udpB udp ipA portA LocalPort portB 远程ip 远程
  • mysql--日志

    转载自 xff1a https www cnblogs com f ck need u p 9001061 html 日志刷新 mysql gt FLUSH LOGS 错误日志 简介 错误日志记录了MySQL Server每次启动和关闭的详
  • osg--读写

    文件I O 命名规则 osgdb xxx 比如 osgdb osg osgdb jpeg 关联文件后缀和加载器 osgDB Registry instance gt addFileExtensionAlias jpeg jpeg osgDB
  • osg--几种效果

    billboards 适用于小草等的绘制 osg BillBoard继承自osg Geode 其下所有osg Drawable面向观察者 旋转行为通过setMode 设置 分别为 POINT ROT EYE 几何体z轴旋转到窗口y轴 POI
  • osg--提高效率

    多线程 OpenThreads Thread 虚函数 cancel run OpenThreads Mutex OpenThreads Barrier OpenThreads Condition 线程管理 GetNumberOfProces
  • torch在ubuntu16.04下的搭建(cuda9.0+cudnn7.0)

    希望外婆身体越来越好 参考 xff1a http blog csdn net chenhaifeng2016 article details 68957732 http www 52nlp cn E6 B7 B1 E5 BA A6 E5 A

随机推荐