从零开始学习Java设计模式 | 软件设计原则篇:迪米特法则

Posted 李阿昀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始学习Java设计模式 | 软件设计原则篇:迪米特法则相关的知识,希望对你有一定的参考价值。

在本讲,我将为大家介绍软件设计原则里面的第五个原则,即迪米特法则。

概述

迪米特法则,又叫最少知识原则。其表示的含义是只和你的直接朋友交谈,不跟"陌生人"说话。

看到这儿的话,很多人会一头雾水,尼玛的,这到底表示什么含义啊?不着急,咱们看下下面这段描述。

如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

大家看到这儿,可能还不是特别理解,没关系,下面我会举几个现实生活中的例子来向大家解释一下。

看这样一个例子,如果一个人想要租房的话,那么他找的就该是房屋中介了,而不是直接的房主;再来看这样一个例子,明星和粉丝进行见面的话,肯定是由经纪人来进行安排的,是不是啊?

最后,再看一个例子,假设现在有家公司需要一个办公软件,那么这家公司是直接找具体的软件工程师,还是找某家开发软件的公司啊?肯定是软件公司,而软件公司又会有许多软件工程师,所以它会把甲方需要的办公软件交给具体的软件工程师去开发。其实,软件工程师在去开发软件的时候,很多情况下,他是压根就不知道到底是哪个甲方需要这个软件的,因此他是不需要直接去和甲方沟通的。如果要沟通的话,那么可以通过第三方转发进行沟通。也就是说,软件工程师把他在开发中遇到的问题告诉公司,公司再跟甲方进行沟通,这样,就可以降低软件工程师和甲方之间的耦合度了,继而提高模块的相互独立性。

看完以上我举的这三个例子,特别是最后一个例子,大家是不是对迪米特法则有了一个更深入的认识啊!

最后,我得多说一嘴,迪米特法则里面有一个"朋友"这个词,它所表示的含义是指当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系(当然,这里面还有依赖关系,因为有方法参数这样一个概念),可以直接访问这些对象的方法。

以上就是"朋友"所带来的好处,说得通俗一点,就是我可以直接去访问你里面的方法。

案例

了解了迪米特法则的概念之后,接下来我们来做一个案例,即明星与经纪人的关系实例,通过这个案例,希望能加深大家对迪米特法则的理解。

案例分析

明星由于全身心投入艺术,所以许多日常事务均由经纪人负责处理,如和粉丝的见面会,和媒体公司的业务洽淡等。这里的经纪人是明星的朋友,而粉丝和媒体公司是陌生人,所以适合使用迪米特法则。

通过上面的描述,我们不难设计出如下所示的类图。

在这里插入图片描述

案例实现

。。。

以上是关于从零开始学习Java设计模式 | 软件设计原则篇:迪米特法则的主要内容,如果未能解决你的问题,请参考以下文章

从零开始学习Java设计模式 | 软件设计原则篇:里氏代换原则

从零开始学习Java设计模式 | 软件设计原则篇:里氏代换原则

从零开始学习Java设计模式 | 软件设计原则篇:合成复用原则

从零开始学习Java设计模式 | 软件设计原则篇:合成复用原则

从零开始学习Java设计模式 | 软件设计原则篇:依赖倒转原则

从零开始学习Java设计模式 | 软件设计原则篇:依赖倒转原则