美文网首页C#简单总结
5.设计模式六大原则

5.设计模式六大原则

作者: 小王子是偷影子的人 | 来源:发表于2018-07-07 16:57 被阅读0次

    ①单一职责原则

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

    优点:

    🔹可以降低类的复杂度;

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

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

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

    ②里氏替换原则

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

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

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

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

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

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

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

    ③依赖倒置原则

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

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

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

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

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

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

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

    ④接口隔离原则

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

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

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

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

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

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

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

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

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

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

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

    ⑤迪米特法则

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

    低耦合的体现。

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

    ⑥开闭原则

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

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

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

    六大原则总结:

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

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

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

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

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

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

    相关文章

      网友评论

        本文标题:5.设计模式六大原则

        本文链接:https://www.haomeiwen.com/subject/yzcguftx.html