第一章.设计原则-----最少知识原则

最少知识原则(迪米特法则)提倡减少软件实体之间的相互作用,以降低耦合性。本文介绍了该原则在设计模式中的应用,如通过中介者模式和外观模式实现对象间通信的隔离。中介者模式让对象通过中介者通信,避免直接引用;外观模式提供一个高层接口,简化子系统的使用。通过封装和限制接口,遵循最少知识原则,可以提高代码的可维护性和可复用性。
摘要由CSDN通过智能技术生成

最少知识原则也叫迪米特法则(Law of Demeter,LoD),“迪米特”这个名字源自 1987 年美国东北大学一个名为“Demeter”的研究项目。

许多人更倾向于使用迪米特法则这个名字,也许是因为显得更酷一点。但本书参考 Head First Design Patterns 的建议,称之为最少知识原则。一是因为这个名字更能体现其含义,另一个原因 是“法则”给人的感觉是必须强制遵守,而原则只是一种指导,没有哪条原则是在实际开发中必 须遵守的。比如,虽然遵守最小知识原则减少了对象之间的依赖,但也有可能增加一些庞大到难 以维护的第三者对象。跟单一职责原则一样,在实际开发中,是否选择让代码符合最少知识原则, 要根据具体的环境来定。

最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这 里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。

我们先来看一下这个代码:

gerneral.getColonel(c).getMajor(m).getCaptain(c).getSergeant(s).getPrivate(p).digFoxhole();

代码通过这么长的消息链才能完成一个任务,太过于繁琐!而且,这条链中任何一个对象的改动都会影响整条链的结果。

1. 减少对象之间的联系

单一职责原则指导我们把对象划分成较小的粒度,这可以提高对象的可复用性。 但越来越多的对象之间可能会产生错综复杂的联系,如果修改了其中一个对象,很可能会影响到跟它相 互引用的其他对象。对象和对象耦合在一起,有可能会降低它们的可复用性。

最少知识原则要求我们在设计程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值