5.设计模式六大原则

①单一职责原则

定义:不要存在多于一个导致类变更的原因。简单说,即一个类负责一项职责。

优点:

可以降低类的复杂度;

提高类的可读性,提高系统的可维护性;

由于软件开发不可避免会出现式样变更,遵循这一职责可以降低变更引起的风险,当修改一个功能时,可以显著降低对其他功能的影响。

注意:单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。

②里氏替换原则

定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。

定义2:所有引用基类的地方必须能透明地使用其子类的对象。

简单说,子类可以扩展父类的功能,但不能改变父类原有的功能。体现在以下4个方面:

子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。

子类中可以添加自己特有的方法。

当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。

当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类要严格。

③依赖倒置原则

定义:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

依赖倒置原则的核心思想是面向接口编程。

传递依赖的方法有三种:接口传递、构造方法传递、setter方法传递

遵循依赖倒置原则应做到的3点:

低层模块尽量都要有抽象类或接口,或两者都有;

变量的声明类型尽量是抽象类或接口;

使用继承是应遵循里氏替换原则。

④接口隔离原则

定义:客户端不应该依赖它不需要的接口,一个类对另外一个类的依赖应该建立在最小的接口上。

接口隔离原则的含义是:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量的少。

在程序设计中,依赖几个专用的接口要比依赖一个综合的接口要更灵活。

接口是设计是对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可扩展性。

接口隔离原则与单一职责原则:

单一职责原则注重的是职责;接口隔离原则注重的是对接口依赖的隔离。

单一职责原则主要是约束类,其次才是接口和方法,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象,针对程序整体框架的构建。

使用接口隔离原则的注意点:

接口尽量的小,但一定要适度。

为依赖接口的类定制服务,只暴露给调用的类它需要的方法,不需要的方法则隐藏起来。

提高内聚,减少对外交互。

⑤迪米特法则

定义:一个对象应该对其他对象保持最少的了解。

低耦合的体现。

迪米特法则的初衷是降低类之间的耦合,由于每个类都减少了不必要的依赖,但要适度使用,过分的使用迪米特原则,会产生大量的中介和传递类,导致系统复杂度变大。

⑥开闭原则

定义:一个软件实体,如类、模块、函数应该对扩展开放,对修改关闭。

可以这样理解:用抽象构建框架,用实现扩展细节。

------分割线-----

六大原则总结:

单一职责原则,告诉我们实现类要职责单一;

里氏替换原则,告诉我们不要破坏继承体系;

依赖倒置原则,告诉我们要面向接口编程;

接口隔离原则,告诉我们在设计接口的时候要精简单一;

迪米特法则,告诉我们要降低耦合;

开闭原则是总纲,告诉我们要对扩展开放,对修改关闭。

你可能感兴趣的:(5.设计模式六大原则)