迪米特法则
来源:互联网 发布:淘宝网黑色双肩包 编辑:程序博客网 时间:2024/05/21 17:55
迪米特法则的定义——如果两个类之间不必直接通信,则这两个类不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法,应该通过第三方来转发这个调用。
迪米特法则也称为最少知识原则(talk only to your immediate friends),就是说一个对象应该尽可能少地了解其他对象。从而降低类之间的耦合,这样做的一个可能后果是系统中存在大量的中介类,这在一定程度上会增加系统的复杂性。
迪米特法则强调的前提是在类的结构设计上,每个类都要尽量降低成员的访问权限,类自己包装好自己的private状态,不需要让别的类知道的字段或者行为就不要公开。 举个例子,古代皇帝召见御前侍卫,需要相关职能机构通知传达圣旨给手下,由手下人去通知侍卫,由认识侍卫的人介绍,然后见到侍卫传递圣旨,这里面就有多次第三方传递的过程,也就是迪米特法则的应用。
/** * Author:小青 * Time:2017-8-27 * Function:抽象的陌生人类 * */public abstract class Stranger{public abstract void operation();}/** * Author:小青 * Time:2017-8-27 * Function:侍卫 * */public class Shiwei extends Stranger{@Overridepublic void operation(){System.out.println("见过皇上,我是御前侍卫,我能打十个");}}/** * Author:小青 * Time:2017-8-27 * Function:太监 * */public class Taijian{public void operation(){System.out.println("other play");}public void findStranger(){Stranger str = new Shiwei();str.operation();}}/** * Author:小青 * Time:2017-8-27 * Function:皇帝 * */public class Huangdi{private Taijian taijian;public Taijian getTaijian(){return taijian;}public void setTaijian(Taijian taijian){this.taijian = taijian;}public void operation(){System.out.println("someone play");}}public class DiMiTeTest{public static void main(String[] args){//声明并实例化皇帝Huangdi kangxi = new Huangdi();//设置一个太监的实例化对象,即找到一个转发者帮忙做事kangxi.setTaijian(new Taijian());//皇帝通过太监传话kangxi.getTaijian().findStranger();} }迪米特法则的根本思想,是强调类之间需要尽量多的实现松散耦合,类之间耦合越弱,越有利于复用,一个处于弱耦合的类被修改,不会对有关系的类造成波及,反之会导致很多麻烦。
以上内容,整理自刘径舟,张玉华编著的《设计模式其实很简单》读书笔记,欢迎转载.
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 迪米特法则
- 【gfoj】Problem#787: 密室逃脱
- How to Install HTTP Git Server With Nginx on Ubuntu 16.04
- java的输入和输出及其学习过程记录
- 数学
- Archlinux安装UEFI Grub
- 迪米特法则
- 哈夫曼树
- PLS-00252: reference to the wrong copy of package STANDARD
- 败方树
- 置换选择排序
- 取出多个不同物品中的唯一名称
- 注解
- Spring Boot CLI
- apache 反向代理,负载均衡配置。