面向对象之迪米特法则
转自: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
面向对象之迪米特法则相关推荐
- 面向对象软件设计原则【JAVA】(开闭原则、里氏代换、依赖倒转、接口隔离、迪米特法则、合成复用原则)
软件设计原则[JAVA](开闭原则.里氏代换.依赖倒转.接口隔离.迪米特法则.合成复用原则) 1.开闭原则 2.里氏代换原则 3.依赖倒转原则 4.接口隔离原则 5.迪米特法则 6.合成复用原则 1. ...
- 迪米特法则——面向对象设计原则
迪米特法则的定义迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),产生于 1987 年美国东北大学(Northeast ...
- 面向对象设计模式原则-迪米特法则
迪米特法则(LOD,Law of Demeter) 注:迪米特法则又名 :最少知识原则 定义:一个软件实体应当尽可能少地与其他实体发生相互作用. 一个对象应当对其他对象尽可能少的了解,从而降低各个对象 ...
- 面向对象六大原则——迪米特法则
什么是迪米特法则(Law of Demeter, LoD) 迪米特法则也可以称为最少知识法则(Least Knowledge Principle, LKP).它们都描述了一个规则:一个对象应该对其他 ...
- 面向对象编程原则(09)——迪米特法则
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 参考资料 <大话设计模式> 作者:程杰 <Java设计模式> 作者:刘 ...
- 设计模式六大原则(5):迪米特法则
定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触编程开始,就 ...
- 设计模式原则(单一、开放封闭、里氏代换、依赖倒转、迪米特法则五大原则)...
原文:设计模式原则(单一.开放封闭.里氏代换.依赖倒转.迪米特法则五大原则) 单一职责原则 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦 ...
- 深入浅出设计模式原则之迪米特法则(LoD)
下面以"明星与经纪人的关系实例"为例来说明迪米特法则原则的应用(工程源码) 分析:明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如与粉丝的见面会,与媒体公司的业务洽淡等 ...
- 迪米特法则(设计模式5)
迪米特法则: 迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说 ...
最新文章
- Scrum敏捷看板工具leangoo-销售流程管理
- redis php异步队列,基于workerman的redis-queue实现异步邮件队列
- sysdba登录不需要密码验证?
- python下载安装教程图解-一招解决:各种版本的Python下载安装教程
- 按需路由选择(ODR)原理及实验
- android pc模式 刘祚虎,刘作虎:一加三段式按键安卓手机唯一 5年付出亿级成本...
- python框架django入门_web框架之Django(python3入门)
- linux 模拟运行 微信,Ubuntu 18.04 安装微信(Linux通用)
- 摆摊神器五菱荣光爆红后,上汽大通房车又成夜市新晋网红
- ajax js引用,ajax 引用js文件内容
- webstorm 快捷键
- Parallels Desktop 17 亮点整理,7 大改进与变化
- 手机“开口”,化身“智能机器人”
- SmartQ 智器—公司介绍
- 大学计算机课程制作生日卡片,计算机《制作生日贺卡》教学设计.doc
- 一种提升多分类准确性的Trick
- Springboot+美妆网站的设计与实现 毕业设计-附源码211539
- win10共享打印机搜索不到计算机,Win10专业版在局域网中搜索不到打印机
- 计算机计划实施800字,大学计划书范文800字3篇
- Android 定时获取上下行流量数据
热门文章
- Rocketmq集群架构图
- Android九点阵手势识别,能量黑科技模块八-九:两路按键颜色手势魔块
- java记事本课程设计,java记事本课程设计
- Spring系列(八):Spring生命周期中BeanPostProcessor接口用法介绍
- 后端:推荐九款Java 性能优化工具,你都用过吗?
- 数据迁移,不停机上线的正确姿势
- 收集17句经典程序员口头禅
- GitHub 上100个优质前端项目整理,值得收藏!
- 某游戏在华为鸿蒙,华为鸿蒙系统运行安卓游戏出现新状况!安卓换皮论被彻底打脸?...
- java如何改注释_关于Java:更改字符串值的注释