又称最少知道原则。指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

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

迪米特法则中的“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。

1 案例分析(明星、经纪人、粉丝、媒体公司)

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

using System;namespace DesignPattern
{internal static class Program{public static void Main(string[] args){var agent = new Agent(){Star = new Star() {Name = "林青霞"},Fans = new Fans() {Name = "李四"},Company = new Company() {Name = "新宇宙媒体公司"}};agent.Meeting();agent.Business();}}/// <summary>/// 明星类/// </summary>public class Star{public string Name {get;set;}}/// <summary>/// 粉丝类/// </summary>public class Fans{public string Name {get;set;}}/// <summary>/// 公司类/// </summary>public class Company{public string Name {get;set;}}/// <summary>/// 经纪人类/// </summary>public class Agent{public Star Star { get; set; }public Fans Fans { get; set; }public Company Company { get; set; }/// <summary>/// 粉丝见面会功能/// </summary>public void Meeting() => Console.WriteLine(Star.Name + "和粉丝" + Fans.Name + "见面");/// <summary>/// 业务洽谈功能/// </summary>public void Business() => Console.WriteLine(Star.Name + "和" + Company.Name + "洽谈");}
}

【设计模式】迪米特法则(Demeter Principle)相关推荐

  1. 23种设计模式-迪米特法则

    概念: 1) 一个对象应该对其他对象保持最少的了解 2) 类与类关系越密切,耦合度越大 3) 迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的 越少越好. ...

  2. 设计模式 迪米特法则

    设计模式 迪米特法则 只和朋友交流 Only talk to your immediate friends 只与直接的朋友通信.即每个对象都有耦合关系,对象之间有耦合. 定义老师类 public cl ...

  3. 浅谈设计模式-迪米特法则

    书接上回,本篇继续讲一下设计模式六大原则(有些书认为是7大原则) 原则定义 迪米特法则(Law of Demeter,LoD)的定义有点意思,有2种表述 1> 最少知道原则,指一个对象应当对其他 ...

  4. Java设计模式-迪米特法则

    迪米特法则 [Low Of Demeter]   定义:一个对象应该对其他对象保持最少的了解.   问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大.   解决 ...

  5. 迪米特法则 java_java设计模式--迪米特法则

    基本介绍 1.一个对象应该对其他对象保持最少的了解 2.类与类关系越密切,耦合度越大 3.迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好.也就是说,对于被依赖的类不管多么复杂,都尽量 ...

  6. [设计模式]迪米特法则

    迪米特法则 又叫最少知识法则 类中的成员属性和成员方法,如果不需要对外暴露,就不要设成public. 代码如下: #include <iostream> #include <stri ...

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

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

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

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

  9. 设计模式:KISS、YAGNI、DRY 原则,迪米特法则(LOD)

    如何理解"KISS 原则"? KISS 原则的英文描述有好几个版本,比如下面这几个. Keep It Simple and Stupid. Keep It Short and Si ...

  10. 围观设计模式(5)--迪米特法则(Lod,Law of Demeter)或最少知道原则(Least Knowledge Principle)

    得墨忒耳(迪米特)定律(Law of Demeter,缩写LoD)亦称为"最少知识原则(Principle of Least Knowledge)",是一种软件开发的设计指导原则, ...

最新文章

  1. 云计算 - OpenStack
  2. UVa 10954 Add All 贪心
  3. redhat下网络的配置
  4. yo 搭建angular应用
  5. DataWorks搬站方案:Azkaban作业迁移至DataWorks
  6. javascript动态创建radio button元素支持IE/Firefox
  7. 11有没有压力感应_特殊感应器赋予机械手多维触感
  8. jquery实现双击事件不触发单击事件
  9. 不安全的反序列化_CVE202027131 思科安全管理器反序列化漏洞 POC
  10. BCD与ASCII码互转-C语言实现
  11. MongoDB安装和入门
  12. Error: Could not link: /usr/local/share/doc/homebrew
  13. OpenGL之显卡(二十六)
  14. 生词生词生词生词[1]
  15. Unity 基础纹理
  16. CommandNotFoundError: Your shell has not been properly configured to use ‘conda deactivate‘.
  17. 我的世界服务器无限掉虚空,这条命令能够让世界瞬间毁灭,无限存活虚空!
  18. python加密excel
  19. 笔记本无法连接WiFi
  20. 算法_二叉树_二叉树的最大深度

热门文章

  1. 推荐与广告技术架构的迭代逻辑
  2. ansible(七种武器)
  3. redis 缓存文件,整个页面缓存redis可参考
  4. html隐藏input边框线,html中去掉文本框(input type=text)的边框或只显示下边框
  5. 蒙特卡罗法计算椭圆c++
  6. xshell如何连接阿里云
  7. python手机端自动点赞软件_python自动点赞功能的实现思路
  8. PCB工程师这几点习惯
  9. 电商平台-“秒杀”系统技术难题及解决方案
  10. 《JavaScript高级程序设计 (第3版)》学习笔记15:chapter_5 - 6 基本包装类型