手机版

百科生活 投稿

迪米特法则介绍,使用了迪米特法则的设计模式(设计模式 迪米特法则)

百科 2025-12-24 21:26:49 投稿 阅读:3486次

关于【迪米特法则介绍】:迪米特法则介绍,今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

  • 内容导航:
  • 1、迪米特法则介绍
  • 2、设计模式 迪米特法则

1、迪米特法则介绍

  1、迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。

  2、迪米特法则可以简单说成:talk alt="迪米特法则介绍,使用了迪米特法则的设计模式(设计模式 迪米特法则)" src="https://p3.toutiaoimg.com/pgc-image/4ab2d95098ae477394c40642cd638eb8~tplv-tt-large.image" />

定义老师类

public class Teacher{// 老师对学生发布命令,清点学生public void commond(GroupLeader groupLeader){List listGirls = new ArrayList();// 初始化学生for(int i = 0; i < 20; i++){listGirls.add(new Girl());}// 然后进行查询任务groupLeader.countGirls(listGirls);}}

然后定义体育文员,清查学生

public class GroupLeader{// 查询数量public void countGirls(List listGirls){}}

定义学生类

public class Girl{}

最后定义场景

public class Client{public static void main(String[] args){Teacher teacher = new Teacher();// 发布命令teacher.commond(new GroupLeader());}}

上方代码的问题,Teacher类有一个朋友类,即GroupLeader,并且Girl类出现在commond方法体内,不属于朋友类。

朋友类:出现在成员变量,方法的输入参数中的类称为成员朋友类,出现在方法内部的类不属于朋友类,

迪米缇法则 一个类,只和朋友交流。不能和非朋友交流。但是刚刚定义的commond于Girl类有交流,即声明了List数组,即与陌生的Girl类有交流

修改如下

迪米特法则介绍,使用了迪米特法则的设计模式(设计模式 迪米特法则)

修改后的老师类

public class Teacher{// 老师对学生发布命令public void commond(GroupLeader groupLeader){// 告诉体育委员进行清查任务groupLeader.countGirls();}}

体育委员

public class GroupLeader{private List listGirls;// 将全班学生带入,通过此构造函数Girl产生联系public GroupLeader(List _listGirls){this.listGirls = _listGirls;}// 进行学生数量的清理public void countGirls(){System.out.println(" " + this.listGirls.size());}}

定义场景

public class Client{public static void main(String[] args){List listGirls = new ArrayList();// 创建一个群体列表// 对学生初始化for(int i = 0; i < 20; i++){listGirls.add(new Girl());}Teacher teacher = new Teacher();// 发布命令teacher.commond(new GroupLeader(listGirls))}}

总结, 类与类之间的关系是建立在类之间,一个方法中不要引入一个类中不存在的对象。

朋友间有距离

一个软件安装的过程

迪米特法则介绍,使用了迪米特法则的设计模式(设计模式 迪米特法则)

first定义第一步,second定义第二步,third定义第三 步。

public class Wizard{private Random rand = new Random();// 第一步public int first(){}// 第二步public int third(){}// 第三步public int third(){}}

最后定义installSoftware

public class installSoftware{public void installWizard(Wizard wizard){int first = wizard.first();int second = wizard.second();int third = wizard.third();}}

最后定义场景

public class Client{public static void main(String[] args){installSoftware invoker = new installSoftware();invoker.installWizard(new Wizard());}}

根据迪米特法则,两个类之间知道的越少越好,Wizard类的太多方法被installSoftware使用,两者的关系过于亲密,修改后如下

迪米特法则介绍,使用了迪米特法则的设计模式(设计模式 迪米特法则)

public class Wizard{private Random rand = new Random();private int first(){}private int second(){}privaet int third(){}// 对外只提供了一个installWizard方法public void installWizard(){int first = this.first();int second = this.second();int third = this.third();}}public class insatllSoftware{public void installWizard(Wizard wizard){wizard.installWizard();// 两个类通过此方法连接}}

场景类

public class Client{public static void main(String[] args){installSoftward invoker = new installSoftware();invoker.installWizard(new Wizard());}}

是自己的就是自己的

如果一个方法放在本类中,即不增加类间关系,也不会对本类不产生负面影响,那就放置在本类中。

本文关键词:六大设计原则之迪米特法则,违反迪米特法则的例子,什么是迪米特法则,使用了迪米特法则的设计模式,迪米特法则的具体实现。这就是关于《迪米特法则介绍,使用了迪米特法则的设计模式(设计模式 迪米特法则)》的所有内容,希望对您能有所帮助!

本文链接:https://bk.89qw.com/a-480311

最近发表
网站分类