zoukankan      html  css  js  c++  java
  • 面向对象的设计模式与原则

    面向对象的特性

    -封装:隐藏内部实现【减少耦合、提高软件可重用】

    -继承:复用现有代码【可扩展性、代码重用】

    -多态:同一个行为不同表现形态【可替换性、灵活性、简化性】

    可实现:单继承+多接口实现、抽象方法和虚方法重写

    从设计原则到设计模式

    针对接口编程,而不是针对于具体实现编程
    调用者无需知道所使用的方法的具体实现,而是想知道是否存在有实现该方法的接口定义

    优先使用对象组合,而不是类继承
    继承在某种程度上破坏了封装性,子类父类耦合度高;而对象组合则只要求被组合的对象具有良好定义的接口,耦合度低

    封装变化点
    使用封装将不变的地方抽离出来,变化的地方进行封装,从而只需要改变变化点,而不影响其他不变的地方,实现层次的耦合

    七大基本原则

    1.单一职责原则(SRP)
    一个类的功能要单一,职责划分清楚、否则就会太臃肿

    2.开放封闭原则(OCP)
    软件功能尽可能对扩展开放、修改封闭

    3.里氏替换原则(LSP)
    子类可以替换父类,但是父类不能替换子类

    4.依赖倒置原则(DIP)
    高层次模块不应该依赖于低层次模块,二者都应该依赖于抽象
    抽象不应该依赖于实现细节,实现细节应该依赖于抽象

    5.接口隔离原则(ISP)
    不应该强迫客户程序依赖于它们不用的方法

    6.迪米特法则(LoD)
    如果两个软件实体无需直接通讯,那么就不应该发生直接的相互调用,可以通过第三方转发调用

    7.合成复用原则(CRP)
    它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现

    参考视频和文档:

    https://www.bilibili.com/video/BV1uJ41157dC?from=search&seid=12951163858889790025
    http://c.biancheng.net/view/1317.html

  • 相关阅读:
    2. 两数相加
    1. 两数之和
    x-pack elasticsearch
    简单的文档
    PHP imagepng函数 问题
    Nginx 配置
    nginx内置变量
    TCP通信
    mysql 的一些操作
    ubuntu 软件包降级
  • 原文地址:https://www.cnblogs.com/ZQWelcomeIndex/p/12687659.html
Copyright © 2011-2022 走看看