编码灵魂(2)-迪米特原则
引言
我觉得编码是有灵魂的,就像每个人都有信仰一样。那么如何去体现信仰,如何凸显灵魂就需要依赖它所固有的原则。最近学习了设计模式的六大原则,有所感悟,特此做总结和记录。在本文中详细介绍了迪米特原则(LoD),同时对它定义的规范进行了举例说明,希望对大家有所帮助。笔者目前整理的一些blog针对面试都是超高频出现的。大家可以点击链接:http://blog.csdn.net/u012403290
技术点
1、高内聚低耦合
这是大家在软件开发都追求的规则,通俗来说,高内聚就是说一个类中各个部分彼此结合的紧密度非常高;低耦合就是指类与类之间,模块与模块之间具有很高的独立性,两者之间的联系要越少越好,如何考虑包装好某一个类甚至是某一个模块是高内聚和低耦合的核心。
2、朋友的概念
在迪米特原则中,判断你写的某个类是否符合该原则,需要通过“朋友”这个概念来说明。在一个类中,它的成员变量,方法的前置条件和后置条件(上篇博文有提到)是该类的“直接朋友”,下面我举个列子:
package com.brickworkers;/*** * @author Brickworker* Date:2017年4月6日下午1:52:07 * 关于类China.java的描述:迪米特原则中国方* Copyright (c) 2017, brcikworker All Rights Reserved.*/
public class China {private India india; //印度是中国的朋友//中国方要求韩方停止建造萨德public void forceCommend(Korea korea){ //韩国也是中国朋友THAAD thaad = THAAD.getThaad();//中国说:我要停止这个萨德的部署korea.stopThaad(thaad); //韩国说:好好好,这个萨德我不建造了}}
如上诉代码中,中国类的朋友就有印度和韩国。只有成员变量,方法入参和返回是该类最直接的朋友。
3、友元类
参照第二点的代码,其中中国和韩国是直接朋友,但是中国和萨德就不是。如果中国要联系到萨德,就需要通过韩国来联系萨德,你总不可能直接去拆了人家的萨德吧。而韩国,这个时候就扮演了友元类。
2、迪米特原则
又叫最少知道原则(LKP),它所针对的是类与类之间的关系,我们用“朋友”来定义,尽量不去涉及直接朋友之外的类。在博主的理解看来(仅仅是个人理解),迪米特原则主要分为两部分,一部分是自身强化,把自己变成高内聚的,严格控制自己的public属性,要有“犹抱琵琶半遮面”的感觉;第二部分是自身和周围的类的关系要低耦合来实现,就是“不和陌生人说话”。
一个迪米特例子
我设计了一个能体现迪米特原则的例子:韩国要建萨德,中国给予强烈的谴责和制止。那么最起码就有3个类,中国方类,它要求韩国停止萨德实施;韩国方类,它可以开始和停止萨德实施;萨德类,标明了萨德的建造情况。具体请看下面的反例和正例。
一个反例
中国方类,要求韩国停止萨德部署:
package com.brickworkers;/*** * @author Brickworker* Date:2017年4月6日下午1:52:07 * 关于类China.java的描述:迪米特原则中国方* Copyright (c) 2017, brcikworker All Rights Reserved.*/
public class China {private India india; //印度是中国的朋友//中国方要求韩方停止建造萨德public void
编码灵魂(2)-迪米特原则相关推荐
- 必知必会的设计原则——迪米特原则
概述 迪米特法则(Law of Demeter )又叫做最少知识原则,即一个对象应该对另一个对象有最少的了解. 迪米特法则的目的在于降低类之间的耦合.由于每个类尽量减少对其他类的依赖,因此,很容易使得 ...
- java设计模式之设计原则⑤迪米特原则
定义: (1)一个对象应该对其他对象保持最少的了解.又叫最少知道原则 (2)尽量降低类与类之间的耦合 (3)强调只和朋友交流,不和陌生人说话(意思就是对外部引入的类越少越好). 朋友:指的是出现在成员 ...
- 设计模式六大原则(5)——迪米特原则
定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触编程开始,就 ...
- 设计模式:迪米特原则
迪米特原则定义 迪米特原则,也叫最少知道原则,即一个类应该对自己依赖的类知道的越少越好,而你被依赖的类多么复杂,对我都没有关系.也就是说,对于别依赖的类来说,不管业务逻辑多么复杂,都应该尽量封装在类的 ...
- [设计模式原则]第五回:迪米特原则
1.引言 迪米特法则(Law of Demeter)又叫作最少知识原则(LKP,Least Knowledge Principle),就是说一个对象应当对其他对象有尽可能少的了解,类与类之间的了解的越 ...
- 面象对象设计6大原则之六:迪米特原则
转载自 面象对象设计6大原则之六:迪米特原则 迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则 定义 一个对象应该对其他对象有最少的了解. 也就是说一个类耦合和调用一个类 ...
- 【学习笔记】慕课网—Java设计模式精讲 第3章 软件设计七大原则-3-6 迪米特原则(最少知道原则)...
/** * 软件设计七大原则-迪米特原则 学习笔记 * @author cnRicky * @date 2018.11.10 */ 迪米特原则(最少知道原则) 一个对象应该对其他对象保持最少的了解.又 ...
- 设计模式-设计原则之迪米特原则
例子 假设老板给项目组长下达一个任务,让其去查询课程的数量 代码 public class Course {} public class TeamLeader {public void checkNu ...
- C# 设计原则 之 迪米特 原则
迪米特法则又叫作最少知道原则,一般设计用于 对类内部 进行 合适的封装. 下面举例: 人关闭电脑的 示例 1.1没有实现 迪米特原则的 代码 namespace 迪米特 {internal class ...
最新文章
- Fitnesse测试系列--如何设置SetUp文件
- 菜鸟学习笔记2,$(document).ready()使用讨论
- C++ 字符串编程训练1
- mac apache服务器
- html5内容切换特效,html5+jQuery图片和文字内容同时左右切换特效
- Unity3d发布WebPlayer版本遇到的问题的解决方法
- 墙裂推荐几款桌面应用
- 未来的计算机没有显示屏,不吹也不黑 解析未来显示的四种可能!
- 计算机cpu架构是什么意思,「电脑小白必备」一分钟快速了解CPU
- Jira管理员配置手册
- 分门别类刷leetcode——动态规划(C++实现)
- invoice-message【发票样式模板】使用
- 新锐任务宝推广渠道推荐
- maxEms和maxLength的区别以及maxEms不起作用的问题
- 软件测试之 loadrunner12.0.2 汉化教程
- java网络学习之 jca体系概述(12)
- UVA 几道dp题总结
- nexus-搭建私服--踩坑记
- JAVA高级阶段知识点总结
- 雷士照明的“罗生门”
热门文章
- html ios滚轮效果控件,深入研究-webkit-overflow-scrolling:touch及ios滚动
- 3M与苏宁易购在智慧零售领域达成战略合作
- 设置Win7系统自动登录
- Python编辑器之jupyter使用介绍(基本功能)
- RS及FEC区别及联系
- 普通人不屑去做的偏门小生意
- linux dd iflag oflag,Linux dd 命令
- 【电路】【人体感应】【人体红外传感器】【夜间监控】自动识别人并自动开启设备-可用于人像跟踪监控【第二部分-设备部分】【方案二】
- 深度讲解TS:这样学TS,迟早进大厂【15】:字符串字面量类型
- 一次HBase2.0 RIT故障处理