定义:

迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP)。

一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的public方法,我就调用这么多,其他的一概不关心。

含义:

只和朋友交流

朋友类的定义是这样的:出现在成员变量、方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。

下面的代码在方法体内部依赖了其他类,这严重违反迪米特法则

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 Teacher {

public void commond(GroupLeader groupLeader) {

groupLeader.countGirls();

}

}

public class GroupLeader {

private List listGirls;

public GroupLeader(List _listGirls) {

this.listGirls = _listGirls;

}

public void countGirls() {

System.out.println("女生数量是:" + listGirls.size());

}

}

注意:一个类只和朋友交流,不与陌生类交流,不要出现getA().getB().getC().getD()这种情况(在一种极端情况下允许出现这种访问,即每一个点号后面的返回类型都相同),类与类之间的关系是建立在类间的,而不是方法间,因此一个方法尽量不引入一个类中不存在的对象,当然,JDK API提供的类除外。

朋友间也是有距离的

一个类公开的public属性或方法越多,修改时涉及的面也就越大,变更引起的风险扩散也就越大。因此,为了保持朋友类间的距离,在设计时需要反复衡量:是否还可以再减少public方法和属性,是否可以修改为private、package-private(包类型,在类、方法、变量前不加访问权限,则默认为包类型)、protected等访问权限,是否可以加上final关键字等。

注意:迪米特法则要求类“羞涩”一点,尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private、package-private、protected等访问权限。

是自己的就是自己的

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

谨慎使用Serializable

最后,迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高。

面向对象设计原则 迪米特法则(Law of Demeter)

迪米特法则(Law of Demeter) 又叫作最少知识原则(Least Knowledge Principle 简写LKP),英文简写为: LoD. 这是一种面向对象程序设计的指导原则,它描述了一 ...

java设计原则:16种原则

一   类的设计原则   1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (L ...

设计模式之六大原则——迪米特法则(LoD,LKP)

转载于:http://www.cnblogs.com/muzongyan/archive/2010/08/05/1793000.html  定义: 迪米特法则(Law of Demeter,LoD)也 ...

Java设计原则:面向接口的设计

前言:在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的.在这种情况下,各个对象内部是如何实现对系统设计人员来说就不那么重要:而各个对象之间的协作关系则成为系统设计的关键.小到不同 ...

设计模式六大原则——迪米特法则(LoD)

1.背景 在图书馆借书.刚開始的时候,直接跑到对应的楼层去,到里面去转,去找要借的书,在里面溜达半天才干找到:后来知道图书馆有一个电脑查询处.然后直接在电脑上输入想要借的书,电脑就会显示你想要借的书的 ...

设计模式值六大原则——迪米特法则(LoD)也称为最少知识原则(LKP)。

定义: 迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP). 一个对象应该对其他对象有最少的了解.通俗地讲,一个类应该对 ...

JAVA设计原则

1.单一职责规则(SRP):有且仅有一个原因引起类的变化. 2.依赖倒置规则(DIP): 高层模块不应该依赖底层模块,两者都用依赖接口: 接口不依赖细节: 细节依赖接口. 3.接口隔离规则:类间的 ...

js的七大设计原则--迪米特原则

一.什么是迪米特原则 迪米特原则也叫最少知道原则,一个类应该对其他对象保持最少的了解.通俗来讲,就是一个类对自己依赖的类知道的越少越好.因为类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另 ...

Java设计原则—开闭原则&lpar;转&rpar;

原文出自:http://www.cnblogs.com/muzongyan/archive/2010/08/05/1793454.html 开闭原则(Open Closed Principle)是Ja ...

随机推荐

JavaScript基础—插曲02

Js学习基础 1:关于js中的数组 这里面可以是键值对的形式来存储的,我们必须利用forIn来输出,这就相当于foreach一样. var dir = new Array(); dir['0'] = ...

&period;NET中类&lpar;class&rpar;与结构&lpar;struct&rpar;

结构是值类型:值类型在栈上分配空间:  类是引用类型:引用类型在堆栈上分配空间:  虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object:  虽然 ...

在Go语言中使用JSON&lpar;去掉空字段&rpar;

Encode 将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error: func Marshal(v interface{}) ([]byte, error) ...

&period;net 获取https页面的信息 在iis7&period;5服务器上不管用

让我纠结了一天多的问题,给大家看下,有相同情况的可以不用浪费时间了,本人当时找了好半天都没找到什么有用的信息,项目在本地没有问题,但部署在服务器后,获取不到https页面的信息,加入下面的代码就可以了 ...

IOS 简单动画 首尾式动画

首尾式动画 首尾式动画即通过实现控件由初始状态到结束状态的过程.(主要表现在控件的Frame 透明度 ) // // ViewController.m // CX 简单动画 // // Created ...

1、IOS开发--iPad之仿制QQ空间(登录界面搭建&plus;登录逻辑实现)

开始搭建登录界面 登录界面效果图: 相关的图片资源下载百度云备份链接: http://pan.baidu.com/s/1o71cvMU 密码: 2h7e 步骤开始: 设置辅助窗口的位置在下方 快捷键o ...

西秦的ACE-Python教程 一、Python本地开发环境部署

西秦的ACE-Python教程 一.Python本地开发环境部署       西秦 级别: 论坛版主 发帖 1357 云币 2782 加关注 写私信   只看楼主 更多操作楼主  发表于: 10-10 ...

HDU 2571

设 d[ i ][ j ] 表示走到坐标为(i, j)的格子时最大的幸运值.初始化:dp[i][j]的第0行和第0列初始化为负的无穷大... #include #inc ...

Java 泛型数组

Java 不支持泛型数组.也就是说, List[] ls = new ArrayList[10]; 是不支持的,而 List

java 迪米特_Java设计原则—迪米特法则(转)相关推荐

  1. java的设计原则_Java设计原则

    引用一段经典的话,"武学的最高境界是无招胜有招",在编程领域,设计模式就可以认为是招数,而真正的内功心法是设计原则: 下面讲述一下编程中应该遵循的基本原则 1.单一职责原则 一个类 ...

  2. 软件设计原则 —— 迪米特原则和合成复用原则

    迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的 ...

  3. 软件架构设计原则--迪米特原则

    本专栏内容参考自:咕泡学院Tom老师的<Spring5核心原理与30个类手写实战>,仅作个人学习记录使用,如有侵权,联系速删   迪米特原则(Law of Demeter,LoD)是指一个 ...

  4. 必知必会的设计原则——迪米特原则

    概述 迪米特法则(Law of Demeter )又叫做最少知识原则,即一个对象应该对另一个对象有最少的了解. 迪米特法则的目的在于降低类之间的耦合.由于每个类尽量减少对其他类的依赖,因此,很容易使得 ...

  5. java开闭原则 例子_Java设计原则—开闭原则(转)

    开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统. 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. S ...

  6. js的七大设计原则--迪米特原则

    一.什么是迪米特原则 迪米特原则也叫最少知道原则,一个类应该对其他对象保持最少的了解.通俗来讲,就是一个类对自己依赖的类知道的越少越好.因为类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另 ...

  7. java 设计模式:软件设计原则、面向对象理论、23 种设计模式

    文章目录 软件设计原则 1.单一职责原则(Single Responsibility Principle) 2.开闭原则(Open Closed Principle) 3.里氏代换原则(Liskov ...

  8. Java的7大设计原则和23种设计模式

    目录 一.UML类图 二. 设计原则 1.单一职责原则 2.里氏替换原则 3.依赖倒置原则 4.接口隔离原则 5.迪米特法则-最少知道原则 6.开闭原则 7.组合/聚合复用原则 三.Java中的23 ...

  9. Java设计模式--------面向对象七大设计原则

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.单一职责原则 二.开闭原则 三.接口隔离原则 什么是接口隔离原则 接口隔离原则分析 四.里氏替换原则 继承 为什么 ...

最新文章

  1. 微信小程序开发实战(三)自定义UI样式---增加减少按钮
  2. Nginx隐藏PHP入口文件index.php
  3. java构造顺序_Java构造顺序
  4. 网络编程(part3)--文件读写之二进制文件读写/with操作
  5. Java中已检查和未检查的异常
  6. 在idea中新建的text文件_开发属于自己的第一款 IDEA 插件!
  7. 学成在线--17.我的课程
  8. 3- OpenCV+TensorFlow 入门人工智能图像处理-TensorFlow入门
  9. java 证书公钥 私钥_java#keytool#生成私钥证书库、公钥证书库
  10. 【数据结构笔记20】图的定义,图的表示:邻接矩阵与邻接表
  11. 软件测试:QQ登录测试用例
  12. U盘安装WIN10移动系统
  13. 微信开发-JS接口微信定位
  14. 计算两点间距离C++
  15. 影响虚拟主机访问速度的因素,主要有哪些?
  16. PDF在线转换成word免费版
  17. 如何用GBD确认函数属于哪个库
  18. 鸿蒙系统功能,华为HarmonyOS2.0系统功能都有哪些呢-华为鸿蒙系统HarmonyOS2.0功能介绍[图文]_咖绿茵手游站...
  19. 20分钟搞定平衡二叉树(AVL树)【超详细】
  20. 1.5.37:雇佣兵

热门文章

  1. zip密码暴力破解[单线程]
  2. Linux下的SVN服务器搭建
  3. 1.在CentOS中搭建SVN服务器
  4. 图书馆管理系统 SRS文档
  5. 什么是Zigbee 3.0
  6. windows 2008 iso制作
  7. js定时器与数码时钟案例(源码及备注)
  8. 必应地图,你这样子怎么和谷歌拼?
  9. [附源码]JAVA+ssm计算机毕业设计调查问卷及调查数据统计系统(程序+Lw)
  10. 崛起币区块链解决方案助教育部门打击全球文凭造假