博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式--迪米特法则(Lod/LKP)
阅读量:4941 次
发布时间:2019-06-11

本文共 1223 字,大约阅读时间需要 4 分钟。

迪米特法则:(Law of Demeter, LoD),也称最少知识原则(Least Knowledge Principle, LKP)
理解:
     假设两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。假设当中一个类须要调用还有一个类的某一个放发的话,能够通过第三者转发这个调用。

  •   仅仅和朋友交流(更准确来讲是:直接的朋友)
每一个对象都必定会与其它对象有耦合关系,两个对象之间的耦合就成为朋友关系,这样的关系的类型有非常多,如组合、聚合、依赖等。

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

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

看个演示样例:
     以下的代码违反了设计原则:
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()); } }

转载于:https://www.cnblogs.com/blfshiye/p/5198983.html

你可能感兴趣的文章
---
查看>>
(第一组_GNS3)自反ACl
查看>>
hdu--1258--Sum It Up(Map水过)
查看>>
Spring @DeclareParents 的扩展应用实例
查看>>
VS2012更新Update1后帮助查看器无法打开
查看>>
Android 文件的读取和写入
查看>>
高校表白APP-冲刺第四天
查看>>
outlook 设置163邮箱
查看>>
mysql优化——show processlist命令详解
查看>>
Solr服务器搭建
查看>>
画世界怎么用光影_世界绘画经典教程:水彩光影魔法教程
查看>>
win+rsync+php,跨平台的fswatch+rsync同步备份
查看>>
vue2 cdn 加载html,vue项目中使用CDN加载
查看>>
数组转集合踩坑
查看>>
node.js的异步I/O、事件驱动、单线程
查看>>
vue cli3 子目录问题
查看>>
github.com访问慢解决
查看>>
微服务架构最强详解
查看>>
转:哈夫曼树详解
查看>>
.Net Core Identity外面使用Cookie中间件
查看>>