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

理解:
     假设两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。假设当中一个类须要调用还有一个类的某一个放发的话,能够通过第三者转发这个调用。
  • 仅仅和朋友交流(更准确来讲是:直接的朋友)
每一个对象都必定会与其它对象有耦合关系,两个对象之间的耦合就成为朋友关系,这样的关系的类型有非常多,如组合、聚合、依赖等。

朋友类的定义:出如今成员变量、方法的输入输出參数中的类。   而方法体类内部的类不能算。
  • 朋友之间也有间距
假设朋友把太多的方法或属性暴露给你。则过于亲热。耦合关系变得异常坚固。并且。改动时涉及的面也就越大。变更引起的风险就越大。

因此,要适时重复衡量:能否够降低public方法和属性,改为private、package-private、protected等訪问权限。及能否够加上finalkeyword。


看个演示样例:
     以下的代码违反了设计原则:
public class Teacher {

    public void commond(GroupLeader groupLeader) {
List<Girl> listGirls = new ArrayList<Girl>();
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<Girl> listGirls; public GroupLeader(List<Girl> _listGirls) {
this.listGirls = _listGirls;
} public void countGirls() {
System.out.println("女生数量是:" + listGirls.size());
} }

设计模式--迪米特法则(Lod/LKP)的更多相关文章

  1. 11. 无数人难办事? - 迪米特法则(LoD)

    11.1 第一天上班 时间: 4月2日19点   地点: 小菜大鸟住所的客厅   任务: 小菜, 大鸟      "回来啦! 怎么样? 第一天上班感受多吧." 大鸟关关心的问道.  ...

  2. IOS设计模式的六大设计原则之迪米特法则(LOD,Law Of Demeter)

    定义 狭义的迪米特法则定义:也叫最少知识原则(LKP,Least Knowledge Principle).如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果其中的一个类需要调用 ...

  3. 5迪米特法则LoD

    一.什么是迪米特法则 迪米特法则(Law of Demeter )又叫做最少知识 原则,也就是说,一个对象应当对其他对象尽可 能少的了解. 迪米特法则最初是用来作为面向对象的系统设 计风格的一种法则, ...

  4. java设计模式--迪米特法则

    基本介绍 1.一个对象应该对其他对象保持最少的了解 2.类与类关系越密切,耦合度越大 3.迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好.也就是说,对于被依赖的类不管多么复杂,都尽量 ...

  5. 迪米特法则(LoD)

    如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用.其根本思想是类之间的松耦合. 类之间的耦合越弱,越有利于 ...

  6. [Python设计模式] 第11章 迪米特法则——最少知识原则

    github地址:https://github.com/cheesezh/python_design_patterns 迪米特法则 迪米特法则(LoD),也叫最少知识原则,如果两个类不必彼此直接通信, ...

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

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

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

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

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

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

随机推荐

  1. uvalive 5721 Activation (概率dp+方程)

    题目链接:http://vjudge.net/problem/viewProblem.action?id=24999 主要思想就是解方程的思想. 二维dp应该很容易想到,就是当前位置加队伍长度. dp ...

  2. mysql的limit经典用法及优化

    用法一   SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2 OFFSET 1;   比如这个 ...

  3. Android学习----Activity

    一.什么是activity Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能.它是 android 应用程序的基本功能单元.Activity 本身是没有界面的.所以activ ...

  4. jQuery 使用 jQuery UI 部件工厂编写带状态的插件(翻译)

    首先,我们要创建一个progress bar,它只允许我们简单的设置进度值.正如我们接下来将要看到的,我们需要通过调用 jQuery.widget 及其两个参数来实现这一操作,这两个参数分别是:将要创 ...

  5. jquery实现DIV层拖动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Jackson将json字符串转换成List<JavaBean>

    Jackson处理一般的JavaBean和Json之间的转换只要使用ObjectMapper 对象的readValue和writeValueAsString两个方法就能实现.但是如果要转换复杂类型Co ...

  7. HDU 3446 daizhenyang's chess

    http://acm.hdu.edu.cn/showproblem.php?pid=3446 题意:一个棋盘,有个KING,有一些能走的点,每次只能走到没走过的地方,没路可走的输,求先手是否必胜. 思 ...

  8. 【HDOJ】1619 Unidirectional TSP

    题目本身一点儿都不难,但是就是被字典序搞死了.写的挺麻烦,但是过了,逆向做好做一点儿. /* 1619 */ #include <cstdio> #include <cstring& ...

  9. 【HDOJ】2604 Queuing

    递推,推得f(n) = f(n-1) + f(n-3) + f(n-4).然后转换成矩阵相乘,如下f(n-1)  f(n-2)  f(n-3)  f(n-4)   *    1   1   0   0 ...

  10. centos7安装VLC播放器

    centos7安装VLC播放器 1.安装eple 下载地址:https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noar ...