迪米特法则

迪米特法则又叫最少知识原则

只和你的直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to strangers)。

其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性

迪米特法则中的“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,

这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。

下面看一个例子来理解迪米特法则

【例】明星与经纪人的关系实例

明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如和粉丝的见面会,和媒体公司的业务洽淡等。

这里的经纪人是明星的朋友,而粉丝和媒体公司是陌生人,

所以适合使用迪米特法则。

类图如下:

Fans.java

package com.itheima.principles.demo5;/*** @version v1.0* @ClassName: Fans* @Description: 粉丝类* @Author: dym*/
public class Fans {private String name;public String getName() {return name;}public Fans(String name) {this.name = name;}
}

Star.java

package com.itheima.principles.demo5;/*** @version v1.0* @ClassName: Star* @Description: 明星类* @Author: dym*/
public class Star {private String name;public Star(String name) {this.name = name;}public String getName() {return name;}
}

Company.java

package com.itheima.principles.demo5;/*** @version v1.0* @ClassName: Company* @Description: 媒体公司类* @Author: dym*/
public class Company {private String name;public String getName() {return name;}public Company(String name) {this.name = name;}
}

Agent.java

package com.itheima.principles.demo5;/*** @version v1.0* @ClassName: Agent* @Description: 经纪人类* @Author: dym*/
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() + "洽谈");}
}

Client.java

package com.itheima.principles.demo5;/*** @version v1.0* @ClassName: Client* @Description: TODO(一句话描述该类的功能)* @Author: dym*/
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. java 迪米特_Java设计原则—迪米特法则(转)

    定义: 迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP). 一个对象应该对其他对象有最少的了解.通俗地讲,一个类应该对 ...

  2. 软件设计原则 —— 迪米特原则和合成复用原则

    迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的 ...

  3. 软件设计原则-迪米特原则c++

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

  4. C++设计原则——迪米特法则

    系列文章目录 C++开闭原则 C++迪米特法则 文章目录 系列文章目录 前言 一.迪米特法则定义 二.使用场景 总结 前言 为什么我们要在软件开发中使用设计模式. 为了代码可重用性.增加可维护性,让代 ...

  5. 六大设计原则 ——迪米特法则

    迪米特法则描述的是:一个对象应该对其他对象有最少的了解.通俗的讲 ,一个类应该对自己需要耦合或调用的类知道得最少,你的内部是如何复杂都和我没关系,那是你的事,我就知道你提供了这么多public方法,我 ...

  6. 设计原则 - 迪米特法则

    目录 概念 编码 实例 迪米特法则实现 源码 概念 迪米特法则(Law of Demeter, LoD):一个软件实体应当尽可能少地与其他实体发生相互作用. 核心观念:类之间的解耦,尽量降低类与类之间 ...

  7. Java设计原则——迪米特法则

    我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习. 学习从来无捷径,循序渐进登高峰. 目录 一.基本介绍 二.应用实例 1.示例一 2.示例二 三.迪米特法则 部分笔记来源于尚硅谷 ...

  8. 【设计模式】七大设计原则--------迪米特法则(得墨忒耳定律)(最少知识定律)

    文章目录 1.介绍 2.示例 3.改进 1.介绍 得墨忒耳,是希腊神话的农业女神. 得墨忒耳定律主要内容为: (1)每个单元对于其他的单元只能拥有有限的知识:只是与当前单元紧密联系的单元: (2)每个 ...

  9. 面向对象软件设计原则【JAVA】(开闭原则、里氏代换、依赖倒转、接口隔离、迪米特法则、合成复用原则)

    软件设计原则[JAVA](开闭原则.里氏代换.依赖倒转.接口隔离.迪米特法则.合成复用原则) 1.开闭原则 2.里氏代换原则 3.依赖倒转原则 4.接口隔离原则 5.迪米特法则 6.合成复用原则 1. ...

最新文章

  1. 14. 变更管理(Change Management)
  2. webpack创建html项目,从零开始其于webpack搭建bootstrap 4项目
  3. ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能
  4. LeetCode 695. Max Area of Island javascript解决方案
  5. 伟大公司为什么需要技术型领导?
  6. 索引 | 学堂原创推文汇总-v2
  7. java做网页客户端_如何成为 Java web开发者
  8. Hive thrift服务(将Hive作为一个服务器,其他机器可以作为客户端进行访问)
  9. sql查询重复记录、删除重复记录方法大全
  10. 【从零搭建一个淘宝客公众号02】- 基于koa搭建后台
  11. Apache优化相关
  12. windows 7 下,如何统计某文件夹下 视频总时长
  13. Python 实现 双人五子棋对局
  14. 双千兆网口路由器方案开发板香橙派R1 Plus LTS连接USB无线网卡测试说明(OpenWRT 系统)
  15. 计算机网络实验华中科技大学,华中科技大学计算机网络实验报告.pdf
  16. 通过脚本将网址添加到客户的受信任站点
  17. android GPS 应用
  18. Excel数据分析从入门到精通(十四)动态图表和甘特图
  19. android 应用程序_Android应用程序基本概述
  20. 二项分布的泊松逼近matlab,学生实习报告【2】(李致宇):利用泊松分布近似二项分布-李英冰的个人主页-搜狐博客...

热门文章

  1. golang结构体数组
  2. Le Chapitre VI
  3. spring websocket Converters must not be empty
  4. LCD 常用的客观效果指标和测试方法
  5. MTK平台 Android4.0.3 定制关机动画
  6. OV5640全景模式预览倒180度,拍照正常的问题
  7. WINCE6.0隐藏文件夹和应用程序访问物理寄存器
  8. collect的功能是什么?其底层如何实现的?_用Python实现定时自动化收取蚂蚁森林能量,再也不怕被偷了
  9. android 7.0 调用系统相机崩溃的解决方案(非谷歌官方推荐)
  10. War包与配置文件分离