百科生活 投稿
关于【迪米特法则介绍】:迪米特法则介绍,今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
- 内容导航:
- 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());}}
是自己的就是自己的
如果一个方法放在本类中,即不增加类间关系,也不会对本类不产生负面影响,那就放置在本类中。
本文关键词:六大设计原则之迪米特法则,违反迪米特法则的例子,什么是迪米特法则,使用了迪米特法则的设计模式,迪米特法则的具体实现。这就是关于《迪米特法则介绍,使用了迪米特法则的设计模式(设计模式 迪米特法则)》的所有内容,希望对您能有所帮助!
- 最近发表