天天看点

设计模式五原则

前言

    在面向对象设计中,可维护性的复用是以设计原则为基础的,每一个原则都蕴含一些面向对象设计的思想,蕴含在很多设计模式中,可以从不同的角度提升一个软件结构的设计水平

单一职责原则

    最简单的面向对象设计原则,用于控制类的粒度大小

    一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过当,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作。因此,要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化封装在不同的类中,如果多个职责总是同时发生改变则可以将它们封装在同一个类中。即我们常说的:高内聚低耦合

开闭原则

    最重要的面向对象设计原则,是面向对象设计的核心所在

    开放封闭原则,对于扩展是开放的,对于修改是封闭的。

    如果一个软件符合开闭原则,那么可以非常方便地对系统进行扩展,而且在扩展时无须修改现有代码,使得软件系统在拥有适应性和灵活性的同时具备较好的稳定性和延续性。即:我们常说的:可维护、可扩展、可复用、灵活性好。

里氏代换原则

    一个软件实体如果使用的是一个父类的话,那么一定适用其子类,而且它察觉不出父类对象和子类对象的区别,即:在软件里面,把父类都替换成它的子类,程序的行为没有变化。

依赖倒转原则

    如果说开闭原则是面向对象设计的目标,那么依赖倒转原则就是面向对象设计的主要实现机制之一。

    A、高层模块不应该依赖低层模块。两个都应该依赖抽象

    B、抽象不应该依赖细节,细节应该依赖抽象。简单地要求:针对接口编程,不要针对实现编程

迪米特法则

    又称为“最少知识原则”

    如果两个类不必彼此直接通信那么这两个类就不应当直接发生直接的相互作用。若其中一个类需要调用另一个类的某个方法的话,可以通过第三者转发这个调用

    其根本思想,是强调了类之间的松耦合。

    即:不要和陌生人说话,只和你的直接朋友联系

    开闭原则、里氏转换、依赖倒转原则一般会同时出现:开闭是目标,里氏是基础,依赖是手段,它们相辅相成,相互补充,目标一致,只是分析问题时所站角度不同。

小结

    单一职责告诉我们实现类要职责单一;里氏转换告诉我们不要破坏继承体系;依赖倒置告诉我们要面向接口编程;迪米特法则告诉我们要降低耦合,开闭是总纲,告诉我们对扩展开放,对修改关闭。