转自:http://my.oschina.net/shyl/blog/531542

<?phpclass Teacher {//老师对学生发布命令,清一下女生public function commond(GroupLeader $groupLeader){//初始化女生for($i=0; $i<20; $i++){$listGirls[] = new Girl();}//告诉体育委员开始执行清查任务$groupLeader -> countGirls($listGirls);}
}class GroupLeader {//有清查女生的工作public function countGirls($listGirls = array()){echo '女生的数量是:' . sizeof($listGirls);}
}class Girl {}class Client {public static function doing() {$teacher= new Teacher();//老师发布命令$teacher -> commond(new GroupLeader());}
}Client :: doing();class Teacher {public function commond(GroupLeader $groupLeader){//告诉体育委员开始执行清查任务$groupLeader -> countGirls();}
}class GroupLeader {private $_listGirls = array();//传递全班的女生public function __construct($listGirls){$this -> _listGirls = $listGirls;}//有清查女生的工作public function countGirls(){echo "女生数量是:" . sizeof($this -> _listGirls);}
}class Girl {}class Client {public static function doing() {    //初始化女生for($i=0; $i<20; $i++){$listGirls[] = new Girl();}$teacher= new Teacher();//老师发布命令$teacher -> commond(new GroupLeader($listGirls));}
}Client :: doing();

一个对象应该对其他对象了解最少。

迪米特法则的核心就是降低类键的耦合,从而提高类的复用性。

具体体现:

① 在类的划分上,应该创建有弱耦合的类;
② 在类的结构设计上,每一个类都应当尽量降低成员的访问权限;
③ 在类的设计上,只要有可能,一个类应当设计成不变类;
④ 在对其他类的引用上,一个对象对其它对象的引用应当降到最低;
⑤ 尽量降低类的访问权限;
⑥ 谨慎使用序列化功能(类或接口在客户端变更,却未在服务端同步更新,引发序列化失败,,项目管理易疏忽);
⑦ 不要暴露类成员,而应该提供相应的访问器(属性)。

迪米特法则主要运用在观察者模式和中介者模式中

迪米特法则的缺点:

1、遵循类之间的迪米特法则会使一个系统的局部设计简化,因为每个局部都不会与远距离的对象有直接的关联;但也会造成不同模块之间的通信效率降低,会使系统的不同模块之间不容易协调。

2、在系统中造出大量的小方法,散落在系统的各个角落。这些方法仅传递间接的调用,与系统的商务逻辑无关。

转载于:https://www.cnblogs.com/wangxusummer/p/5251152.html

面向对象之迪米特法则相关推荐

  1. 面向对象软件设计原则【JAVA】(开闭原则、里氏代换、依赖倒转、接口隔离、迪米特法则、合成复用原则)

    软件设计原则[JAVA](开闭原则.里氏代换.依赖倒转.接口隔离.迪米特法则.合成复用原则) 1.开闭原则 2.里氏代换原则 3.依赖倒转原则 4.接口隔离原则 5.迪米特法则 6.合成复用原则 1. ...

  2. 迪米特法则——面向对象设计原则

    迪米特法则的定义迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),产生于 1987 年美国东北大学(Northeast ...

  3. 面向对象设计模式原则-迪米特法则

    迪米特法则(LOD,Law of Demeter) 注:迪米特法则又名 :最少知识原则 定义:一个软件实体应当尽可能少地与其他实体发生相互作用. 一个对象应当对其他对象尽可能少的了解,从而降低各个对象 ...

  4. 面向对象六大原则——迪米特法则

    什么是迪米特法则(Law of Demeter, LoD)  迪米特法则也可以称为最少知识法则(Least Knowledge Principle, LKP).它们都描述了一个规则:一个对象应该对其他 ...

  5. 面向对象编程原则(09)——迪米特法则

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 参考资料 <大话设计模式> 作者:程杰 <Java设计模式> 作者:刘 ...

  6. 设计模式六大原则(5):迪米特法则

    定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触编程开始,就 ...

  7. 设计模式原则(单一、开放封闭、里氏代换、依赖倒转、迪米特法则五大原则)...

    原文:设计模式原则(单一.开放封闭.里氏代换.依赖倒转.迪米特法则五大原则) 单一职责原则 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因.   如果一个类承担的职责过多,就等于把这些职责耦 ...

  8. 深入浅出设计模式原则之迪米特法则(LoD)

    下面以"明星与经纪人的关系实例"为例来说明迪米特法则原则的应用(工程源码) 分析:明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如与粉丝的见面会,与媒体公司的业务洽淡等 ...

  9. 迪米特法则(设计模式5)

    迪米特法则: 迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说 ...

最新文章

  1. Scrum敏捷看板工具leangoo-销售流程管理
  2. redis php异步队列,基于workerman的redis-queue实现异步邮件队列
  3. sysdba登录不需要密码验证?
  4. python下载安装教程图解-一招解决:各种版本的Python下载安装教程
  5. 按需路由选择(ODR)原理及实验
  6. android pc模式 刘祚虎,刘作虎:一加三段式按键安卓手机唯一 5年付出亿级成本...
  7. python框架django入门_web框架之Django(python3入门)
  8. linux 模拟运行 微信,Ubuntu 18.04 安装微信(Linux通用)
  9. 摆摊神器五菱荣光爆红后,上汽大通房车又成夜市新晋网红
  10. ajax js引用,ajax 引用js文件内容
  11. webstorm 快捷键
  12. Parallels Desktop 17 亮点整理,7 大改进与变化
  13. 手机“开口”,化身“智能机器人”
  14. SmartQ 智器—公司介绍
  15. 大学计算机课程制作生日卡片,计算机《制作生日贺卡》教学设计.doc
  16. 一种提升多分类准确性的Trick
  17. Springboot+美妆网站的设计与实现 毕业设计-附源码211539
  18. win10共享打印机搜索不到计算机,Win10专业版在局域网中搜索不到打印机
  19. 计算机计划实施800字,大学计划书范文800字3篇
  20. Android 定时获取上下行流量数据

热门文章

  1. Rocketmq集群架构图
  2. Android九点阵手势识别,能量黑科技模块八-九:两路按键颜色手势魔块
  3. java记事本课程设计,java记事本课程设计
  4. Spring系列(八):Spring生命周期中BeanPostProcessor接口用法介绍
  5. 后端:推荐九款Java 性能优化工具,你都用过吗?
  6. 数据迁移,不停机上线的正确姿势
  7. 收集17句经典程序员口头禅
  8. GitHub 上100个优质前端项目整理,值得收藏!
  9. 某游戏在华为鸿蒙,华为鸿蒙系统运行安卓游戏出现新状况!安卓换皮论被彻底打脸?...
  10. java如何改注释_关于Java:更改字符串值的注释