面向对象设计的七大原则

里式替换原则:

  1. 约束滥用继承。
    它给了我们一个判断和设计类之间关系的基准:需不需要继承,以及怎样设计继承关系,而不是简单地
    根据两者之间是否有相同之处来说使用继承。
  2. 要求:子类可以扩展父类的功能,但不能改变父类原有的功能。
    具体来说:
    子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
    子类中可以增加自己特有的方法。
    当子类的方法重载父类的方法时,方法的前置条件(即输入参数)要比父类方法的输入参数更宽松。
    当子类的方法实现父类的方法时,方法的输出或返回值要比父类更严格或相等。
    例如:
    例1:鲸鱼类和鱼类:鱼作为基类,很多特性是鲸鱼所不具备的,例如通过腮呼吸,以及卵生繁殖。
    那么,二者是否具有共性呢? 有,那就是它们都可以在水中"游泳"。
    例2:运动员和自行车:每个运动员都有一辆自行车,自行车作为基类。
    例3:正方行继承于矩形。

迪米特原则(最少知道原则):

  1. 降低类之间的耦合(一定程度上增加了系统的复杂度)。
  2. 要求:反复衡量是否还可以再减少public方法和属性。

开闭原则:

  1. 对扩展开放,对修改关闭,提高稳定性、扩展性。
  2. 要求:开闭原则等同于面向接口设计。
    具体来讲:对软件系统中的不变的部分加以抽象,让接口稳定,但接口实现是可变的,开放的。

》-----------------------------------------------------------------------------------------
一般地,可以把这七个原则分成了以下两个部分:
设计目标:开闭原则、里氏代换原则、迪米特原则
设计方法:单一职责原则、接口分隔原则、依赖倒置原则、组合/聚合复用原则
》-----------------------------------------------------------------------------------------

单一职责原则:
永远不要让一个类存在多个改变的理由。

接口分隔原则:
不能强迫用户去依赖那些他们不使用的接口。

依赖倒置原则:
高层模块不直接依赖低层模块,而是依赖抽象接口层。

组合/聚合复用原则:
尽量使用组合/聚合,不要使用类继承。

发布了41 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/wade_510/article/details/104411292