迪米特法则应用下的模式

在学习代码的时候,我尽可能的去朝着高内聚低耦合的目标去写,然后就出现了一些疑惑,与大家分享。

啥是迪米特法则?

    迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。
    迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系,也希望能通过它的友元类来转达。因此,应用迪米特法则有可能造成的一个后果就是:系统中存在大量的中介类,这些类之所以存在完全是为了传递类之间的相互调用关系——这在一定程度上增加了系统的复杂度。

    上述的解释,大家也应该能明白迪米特法则的利与弊了。

    如果你在编码的路上,发现了这么一回事:为了实现功能A,则类X与类Y需要进行提供一些数据;为了实现功能B,需要类X与类Z需要进行传数据;最要命的是为了实现某动态功能C,需要由用户去确定那两个类传数据。那么在这样的情况下,可以采用迪米特法则,于是中介者模式就出现了。

    

灵活和简单,孰重孰轻?

    利用迪米特法则,我们可以使代码更加的灵活。同时,如果过度使用,会让代码维护起来更加的麻烦。如何去取舍关键是看个人,每个人的编码方式不一样。到时候就得根据功能和系统复杂度来设计了。
    这种设计理念可以不用,但是不可以不会。

    

区分模块和类

    在想这个问题的时候,突然有了这样的疑问:迪米特法则的存在,不就让程序的耦合度提高了吗?为什么要这样?
    后来,明晰了这样的事情:高内聚低耦合是指模块间联系少,同一模块高联系。迪米特法则不是指模块间,而是对象之间,类之间的关系,所以并不会导致耦合变高。反而会因为迪米特法则,让程序变得灵活性强。

发布了57 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Cjx_9421/article/details/103263946