设计模式六大原则之五:迪米特法则。...简介 姓名:迪米特法则 英文名:Law of Demeter 小名:最少知识原则 小名英文名:Least Knowledge Principle 价值观:妈妈说不和陌生人说话 个人介绍: 1....有一天,设计模式老师讲解了迪米特法则,同学们听得云里雾里的,老师怕同学们没掌握这个知识点,就给同学们布置了一个作业,需要同学们按迪米特法则实现。...老师便给同学们讲解了这 2 个例子,让学生感受一番迪米特法则。...总结 迪米特法则主要讲述的观点是高内聚、低耦合。我理解为:是你的,就别给别人;不是你的,就别拿。上面定义的朋友也是这个意思。
一个对象应该对其他对象有最少的了解 迪米特法则对低耦合提出了明确的要求 1、只和朋友交流 虽然一个类和多个类产生依赖关系,但它只和朋友类交流 朋友类的定义:### 出现在成员变量、方法的输入输出参数中的类是成员朋友类...两个类虽然会交流,但不能暴露太多的方法给对方,能不暴露就不暴露,也就是少用public,多用private 3、是自己的就是自己的 如果一个方法放在本类中,既不增加类间关系,也不对本类产生 迪米特法则的核心观念就是类间解耦
迪米特法则,也称为最少知识原则(Law of Demeter),是面向对象设计中的一个原则,旨在降低对象之间的耦合性,提高系统的可维护性和可扩展性。...迪米特法则的核心思想可以概括为以下几点: 一个对象应该尽量少地了解其他对象的内部结构和实现。 一个对象只与其直接朋友(即与其关联最密切的对象)进行交互。...以下是一个示例代码来说明迪米特法则: 假设我们有一个电商系统,包含了顾客(Customer)、订单(Order)和商品(Product)这三个类。...这会导致Customer类与Order类和Product类之间存在紧耦合的关系,违反了迪米特法则。...符合迪米特法则的改进示例: class Product { private String name; private double price; public Product(
遵循迪米特法则,只应该暴露应该暴露的方法 class Computer{ private func saveData() { } private func closeService...closeComputer() { let c = Container() c.sendCloseCommand() } } 从上面看到,和依赖倒置原则相结合之后的设计,也是符合迪米特原则的
标签 | 面向对象设计 重构 字数 | 2973字 阅读 | 8分钟 在面向对象设计的世界里,有一个寻常却又常常为人所忽略的原则——“迪米特(Law of Demeter)”法则。...对于PaperBoy而言,Wallet不满足迪米特法则三个条件中的任何一个,因此让PaperBoy与Wallet对象直接交互是错误的行为。...这里所谓的“隐私”,可以视为是“数据”,是“信息”,是“知识”,因此我们往往又将迪米特法则称之为“最小知识法则”。 当我们理解“最小知识法则”时,又可以从职责的角度去思考以上代码。...所以“最小知识法则”乃善法,在对象社区中,我们就应该刻意减少对象之间彼此深入的了解。了解最小的知识,就意味着依赖最小,彼此产生的影响就会最小。...判断一段代码是否违背了迪米特法则,有一个小窍门,就是看调用代码是否出现形如a.m1().m2().m3().m4()之类的代码。
迪米特法则 迪米特法则表示一个对象应该对其他对象保持最少的了解。也就是说,一个类应该只和它的直接朋友交流,而不和它的间接朋友交流。...迪米特法则是面向对象设计的重要原则之一,它体现了类之间的松耦合和高内聚。如果一个软件能够遵循迪米特法则,那么它就具有以下两个优点: 降低了类之间的耦合性,提高了系统的可维护性。...Teacher teacher : teachers) { System.out.println(teacher.getName()); } } } 这个类违反了迪米特法则...为了遵循迪米特法则,我们应该将 Teacher 类的 getName() 方法封装在 Teacher 类内部,并让 School 类只调用 Teacher 类的 printName() 方法。
迪米特法则 迪米特法则, 如果两个类不必彼此直接通信, 那么这两个类就不应当发生直接的相互作用....如果其中一个类需要调用另一个类的某一方法的话, 可以通过第三者转发这个调用.迪米特法则首先强调的前提是在类的结构设计上, 每个类都应当尽量降低成员的访问权限, 强调类之间的松耦合, 类之间的耦合越弱,
原理迪米特法则的核心思想是尽量减少对象之间的交互,使得系统的耦合度降低。它强调了以下两个方面:一个对象应该对其他对象尽可能少地了解。一个对象不应该直接与其他对象交互,而应该通过一个中间对象来进行交互。...具体来说,迪米特法则可以被描述为以下三个要点:只与直接的朋友通信。一个对象应该只与它直接的朋友通信,而不是跟“陌生人”说话。...迪米特法则的目的是将一个系统分解成更小的、更简单的部分,使得每个部分可以独立地进行开发和维护。它可以有效地降低系统的复杂度和耦合度,提高系统的可维护性和可扩展性。...应用迪米特法则可以应用于以下几个方面:系统设计:在系统设计阶段,应该尽可能地减少对象之间的交互,避免将不相关的对象耦合在一起。应该将系统分解成更小、更简单的部分,使得每个部分可以独立地进行开发和维护。...代码编写:在代码编写阶段,应该尽可能地遵守迪米特法则,避免对象之间的直接交互,尽可能使用中间对象进行交互。
定义: 迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP)。 一个对象应该对其他对象有最少的了解。...下面的代码在方法体内部依赖了其他类,这严重违反迪米特法则 public class Teacher { public void commond(GroupLeader groupLeader...注意:迪米特法则要求类“羞涩”一点,尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private、package-private、protected等访问权限。...谨慎使用Serializable 最后,迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高。
// 省略还书的具体实现 } // 省略其他方法和属性的定义}在上述代码中,Book、Library和User三个类之间的关系比较紧密,它们之间的交互比较频繁,没有遵守迪米特法则...下面对该系统进行重构,使用迪米特法则来设计系统。首先,我们需要引入一个中间对象,来封装Book和User之间的交互。假设该中间对象命名为Borrow,表示借书记录。
迪米特法则的定义 迪米特法则也称为最少知识原则,一个对象应该对其他对象有最少的了解....迪米特法则对类的低耦合提出了要求 1.只和朋友交流 什么是朋友呢? 出现在成员变量、方法的输入输出参数中的类称为朋友类,而出现在方法体内部的类不属于朋友类....变更引起的风险扩散也就越大.因此,为了保持朋友类间的距离,在设计时需要反复衡量:是否还可以再减少public方法和属性,是否可以修改为private,protected等访问权限,是否可以加上final关键字等,迪米特法则要求类尽量不要对外公布太多的...可以坚持这样一个原则: 如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中. ---- 迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高....其要求的结果就是产生了大量的中转或跳转类,导致系统的复杂性提高,同时也为维护带来了难度.在采用迪米特原则时需要反复权衡,既做到让结构清晰,有做到高内聚低耦合
小谈设计模式(12)—迪米特法则 专栏介绍 主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。...迪米特法则 迪米特法则(Law of Demeter)也被称为最少知识原则(Least Knowledge Principle),是一种面向对象设计的原则,它强调一个对象应该尽量减少与其他对象之间的相互依赖...遵循迪米特法则可以使系统的设计更加模块化,每个对象只需要关注自身的职责,而不需要了解其他对象的内部细节。这样可以降低系统的复杂性,提高代码的可读性和可维护性。...同时,迪米特法则也有助于提高系统的可扩展性,因为减少了对象之间的直接依赖,新增功能时只需要修改少量的对象即可。...总结 迪米特法则强调了对象之间的松耦合设计,通过减少对象之间的直接依赖,提高系统的灵活性和可维护性。遵循迪米特法则可以使系统更加模块化、可扩展和易于测试。
本篇文章特别感谢:胡前辈的bug指导 开始 迪米特法则:只与你的直接朋友交谈,不跟“陌生人”说话。
迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合度。...迪米特原则主要强调:只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称为成员朋友类,而出现在方法体内部的类不属于朋友类。...根据迪米特原则,Boss只想要结果,不需要跟Course直接交流。而TeamLeader统计需要引用Course对象。Boss和Course并不是朋友,从下面的类图就可以看出来。
本文节选自《设计模式就该这样学》 迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP...迪米特原则主要强调:只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称为成员朋友类,而出现在方法体内部的类不属于朋友类。...根据迪米特原则,Boss只想要结果,不需要跟Course直接交流。而TeamLeader统计需要引用Course对象。Boss和Course并不是朋友,从下面的类图就可以看出来。
六大设计原则之迪米特法则 定义 迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解...模式与意义 迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。 迪米特法则不希望类之间建立直接的联系。...门面模式和调停者模式实际上就是迪米特法则的应用。 广义的迪米特法则在类的设计上的体现: 优先考虑将一个类设置成不变类。 尽量降低一个类的访问权限。 谨慎使用Serializable。...先来看一下违反迪米特法则的设计。...按照迪米特法则,应该避免类中出现这样非直接朋友关系的耦合。
1.1 概述 迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),产生于 1987 年美国东北大学的一个名为迪米特的研究项目...需要注意的是,过度使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性,使模块之间的通信效率降低。...所以,在釆用迪米特法则时需要反复权衡,确保高内聚和低耦合的同时,保证系统的结构清晰。 1.2 优点 ① 降低了类之间的耦合度,提高了模块的相对独立性。 ...只看结果是没有问题的,但是它不符合迪米特法则。迪米特法则要求只跟朋友说话,其朋友指的是当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等。...迪米特法则要求我们类间解耦,但是解耦是有限度的,除非是计算机的最小符号二进制的 0 和 1,那才是完全解耦,我们在实际的项目中时,需要适度的考虑这个法则,别为了套用法则而做项目,法则只是一个参考,违背了法则
文章目录 什么是迪米特法则?...迪米特法则的原则 代码实践:迪米特法则的应用 结论 欢迎来到Java学习路线专栏~探索迪米特法则:降低耦合,提升代码质量与可维护性 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒 ✨博客主页:IT·...迪米特法则,也被称为“最少知识原则”,在面向对象设计中具有显著的指导作用,其目标在于降低系统内部各模块之间的耦合性,从而提升代码质量和可维护性。 什么是迪米特法则?...代码实践:迪米特法则的应用 让我们通过一个简单的代码示例来更好地理解迪米特法则的应用。 假设我们有一个订单系统,由订单(Order)、顾客(Customer)和商品(Product)三个类组成。...下面我们将展示如何遵循迪米特法则,降低类之间的耦合。
2、定义 迪米特法则(Law of Demeter)又叫作最少知识原则(LKP,Least Knowledge Principle),就是说一个对象应当对其它对象有尽可能少的了解,类与类之间的了解的越多
那正是迪米特法则要去完成的。 迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。...先来看一下违反迪米特法则的设计。...按照迪米特法则,应该避免类中出现这样非直接朋友关系的耦合。...迪米特法则的初衷是降低类之间的耦合,由于每个类都减少了不必要的依赖,因此的确可以降低耦合关系。...过分的使用迪米特原则,会产生大量这样的中介和传递类,导致系统复杂度变大。所以在采用迪米特法则时要反复权衡,既做到结构清晰,又要高内聚低耦合。
领取专属 10元无门槛券
手把手带您无忧上云