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

意义: 迪米特法则的意义在于降低类之间的耦合。由于每个对象尽量减少对其他对象的了解,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。

狭义的迪米特法则:
  如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一类的某一个方法的话,可以通过第三者转发这个调用。
  
如何做到一个对象应该对其他对象有最少的了解呢?

只和直接的朋友交流:出现在成员变量、方法的输入输出参数中的类就是直接的朋友。
减少对朋友的了解:尽量减少一个类对外暴露的方法。

案例:
使用迪米特法则

明星与经纪人的关系实例

明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如和粉丝的见面会,和媒体公司的业务洽淡等。这里的经纪人是明星的朋友,而粉丝和媒体公司是陌生人,所以适合使用迪米特法则。

类图
明星类

/*** @Description: 明星类*/
public class Star {private String name;public Star(String name) {this.name = name;}public String getName() {return name;}
}

粉丝类

/*** @Description: 粉丝类*/
public class Fans {private String name;public String getName() {return name;}public Fans(String name) {this.name = name;}
}

媒体公司类

/*** @Description: 媒体公司类*/
public class Company {private String name;public String getName() {return name;}public Company(String name) {this.name = name;}
}

经纪人类(负责与粉丝,媒体公司接触)

/*** @Description: 经纪人类*/
public class Agent {private Star star;private Fans fans;private Company company;public void setStar(Star star) {this.star = star;}public void setFans(Fans fans) {this.fans = fans;}public void setCompany(Company company) {this.company = company;}//和粉丝见面的方法public void meeting() {System.out.println(star.getName() + "和粉丝" + fans.getName() + "见面");}//和媒体公司洽谈的方法public void business() {System.out.println(star.getName() + "和" + company.getName() + "洽谈");}
}

测试类

/***测试类*/
public class Client {public static void main(String[] args) {//创建经纪人类Agent agent = new Agent();//创建明星对象Star star = new Star("林青霞");agent.setStar(star);//创建粉丝对象Fans fans = new Fans("李四");agent.setFans(fans);//创建媒体公司对象Company company = new Company("黑马媒体公司");agent.setCompany(company);agent.meeting();//和粉丝见面agent.business();//和媒体公司洽谈业务}
}

测试结果
解释说明

这里经纪人负责与明星商量,与粉丝,媒体接触,然后才是明星与粉丝见面,与媒体公司会谈。明星尽量少的与粉丝,与媒体公司接触,这里就体现到了迪米特法则。

结束!!!!!!!


                             和她在一起我肯定很幸福啊,可她和我在一起她就不一定了。

设计原则之迪米特法则相关推荐

  1. 6大设计原则之迪米特法则

    迪米特法则的定义 迪米特法则也称为最少知识原则,一个对象应该对其他对象有最少的了解. 通俗的讲,一个类应该对自己需要耦合或调用的类知道的最少,被调用类的内部是如何复杂都和我没关系,我就知道你的这些pu ...

  2. 【实验】软件设计原则,迪米特法则与开闭原则

    (一)实验原理 1.迪米特法则:不要和"陌生人"说话.或只与你的直接朋友通信. 我们称出现成员变量.方法参数.方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友. ...

  3. 设计原则之六——迪米特法则

    以下七种设计原则是软件设计模式尽量遵循的原则,各种原则要求的侧重点不同. 开闭原则 是总纲,它告诉我们要对扩展开放,对修改关闭: 里氏替换原则 告诉我们不要破坏继承体系: 依赖倒置原则 告诉我们要面向 ...

  4. 六大设计原则之迪米特法则

    定义:一个类和另一个类应该保持最小的了解 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生变化时,对另一个类影响也越大. 解决方案:尽量降低类与类之间的耦合. //总公司员工 class E ...

  5. 设计原则之迪米特法则详解

    一.迪米特法则定义 一个对象应当对其它对象有尽可能少的了解,也被成为最少知道原则. 意思就是一个类中只与与它有直接关联的类联系,出现在这个类的成员变量.方法的输入,方法参数的类被成为朋友类,其他无直接 ...

  6. java设计模式(7):软件设计原则之迪米特法则

    迪米特法则又叫最少知识原则. 只和你的直接朋友交谈,不跟"陌生人"说话(Talk only to your immediate friends and not to strange ...

  7. 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则

    目录 1 单一职责原则 2 开放封闭原则 3 依赖倒置原则 4 里氏代换原则 5 迪米特法则 1 单一职责原则 比如:电脑内存坏了就应该更换内存,不应该更换CPU (内存负责内存.CPU负责CPU) ...

  8. 设计模式原则之迪米特法则

    设计模式原则之迪米特法则 迪米特法则(Law of Demeter, LoD)的核心是一个软件实体应当尽可能少地与其他实体发生相互作用. 如果一个系统符合迪米特法则,那么当其中某一个模块发生修改时,就 ...

  9. 深入浅出设计模式原则之迪米特法则(LoD)

    下面以"明星与经纪人的关系实例"为例来说明迪米特法则原则的应用(工程源码) 分析:明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如与粉丝的见面会,与媒体公司的业务洽淡等 ...

最新文章

  1. putchar函数的基本格式
  2. linux提取第一列且删除第一行(awk函数)
  3. [转]SQL2005后的ROW_NUMBER()函数的应用
  4. 如何写一个能被手机打开的C语言小程序,如何用C语言中一些简单的语句做一个小程序,能够输入一个字符就会弹出一句话...
  5. 13寸笔记本电脑尺寸_2020笔记本电脑推荐(华为篇)
  6. 传惠普下周公布webOS平台最终命运
  7. 【TensorFlow篇】--Tensorflow框架实现SoftMax模型识别手写数字集
  8. GNU make manual 翻译(四十三)
  9. php添加导航和删除导航,新增/修改/删除ECSHOP后台左侧导航菜单
  10. c#进销存(1):需求分析
  11. 代码随想录程序员求职攻略完整pdf开放下载
  12. 小榕密码管家xp 绿色
  13. 大时代势不可挡_会使您势不可挡的程序员的行为
  14. Markdown语法介绍(详细)
  15. 二维坐标系,求解一个点旋转到另外一个点的映射矩阵
  16. 企业项目实战k8s篇(二十)持续集成与持续交付
  17. BiliBili系列(二):个人历史数据爬取与分析
  18. 前端工程师需要学习ps 吗_【百度前端工程师面试】前端开发技术要会PS-看准网...
  19. 需求、需求分析、设计 思想
  20. 排名 教材 数字电子技术_《数字电子技术基础》高等院校专业教材.pdf

热门文章

  1. 网易2019:迷路的牛牛被3整除
  2. 【详细】linux系统安装显卡驱动(Nvidia driver) + cuda10.2
  3. PCA 的数学原理和可视化效果
  4. MADlib——基于SQL的数据挖掘解决方案(11)——回归之线性回归
  5. java题目 万年历 计划书,Java版万年历设计报告及流程图
  6. 什么是加壳和脱壳技术?加壳和脱壳技术是什么意思?
  7. SMS短信的C语言代码
  8. Centos7 设置 防火墙 iptables 说明
  9. 东方博宜oj 数组问题
  10. JAVA教程-JAVA语言基础框架知识学习点-JAVA精通必看