美文网首页
【面向对象基础】| 面向对象设计的六原则理解和区别

【面向对象基础】| 面向对象设计的六原则理解和区别

作者: 曦曦冉冉L | 来源:发表于2018-03-02 23:47 被阅读34次
    每次说到六原则,可能开始只是会随口而来的几句定义,但是真正去设计模式的时候有正确应用呢?
    笔者总结一下它们之间的关系,以及对应的面向对象的抽象,封装,继承,多态的特性呢?

    1.功能简单单一组,对应特征:封装
    要求模块间松耦合,内部高聚合。
    1)单一职责原则——SRP (针对类Class的单一功能要求)
    抽象类,普通类要求功能简单明了,避免多个功能耦合在一个类里面
    2)接口隔离原则——ISP(针对接口Interface的单一功能要求)
    接口设计要求功能单一,避免功能过多耦合,避免继承于接口的类实现冗余功能的。
    3)迪米特原则 最小依赖原则——LOD(针对方法与方法之间的接口API的单一要求)
    方法与方法之间调用时尽量减少类对象的内容,尽可能的使用原子类型变量,使用枚举类型变量。保证方法与方法调用时候导致与其他类的耦合关系尽量减少。特别是提供给外界的参数时,不要让其他类过多知道自己类的内部内容。

    2. 封闭不修改组 ,对应特征:封装+继承
    1)里式替换原则——LSP
    父类实现的方法子类可以直接使用,避免功能代码的重复,子类不可以复写,只能新建其他的方法。
    如果要实现扩展,则可以参考依赖导致倒置原则(不从实例化的父类中继承,而从基于抽象类和接口的继承)。

    继承

    2)开闭原则——OCP
    对修改封闭,对扩展允许。不能修改已有的类/父类,通过扩展实现修改软件的变化。因为已有的类的方法和接口 可能存在多个继承,动了BaseClass,继承的其他类也会受到影响。扩展方式参考依赖倒置原则。

    3. OOP模式原型组,对应特征:抽象+多态
    1)依赖倒置原则——DIP
    大多数设计模式都是基于依赖倒置原则设计。基于前面第二点里氏替换原则和开闭原则的硬性要求,实现方式是依赖倒置原则。如果需要扩展,需要父类抽象或者接口继承的方式。调用的接口固定,无论是两边内容有修改,都可以保证接口不变。

    依赖倒置

    这篇面向对象六大原则文章讲的比较形象,并且附带代码。

    知乎这篇问题讲了 里氏置换原则的疑问点。

    相关文章

      网友评论

          本文标题:【面向对象基础】| 面向对象设计的六原则理解和区别

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