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

    面向对象基础设计原则

    1. 抽象
    2. 封装
    3. 继承
    4. 多态
    5. 组合

    典型的设计原则

    1. Liskov替换原则(LSP)

      • 即子类型必须能够替换他们的基类型,或者说子类型不能添加任何基类型没有的附加约束。
      • 针对接口编程思想:实现继承破坏了基类的实现,接口继承并不定义对象之间的内部关系,耦合度更低,扩展性更好
    2. 开放-封闭原则(OCP)

      • 即对修改封闭,对扩展开放
      • 基本思想就是封装变化的行为作为抽象类或接口
      • 策略模式和模板方法模式提供了实现
    3. 单一职责原则(SRP)

      • 即一个类应当只有一个职责
      • 建立高内聚的类,分离出不相关的功能
    4. 接口隔离原则(ISP)

      • 即接口的单一职责性
      • 定制服务,为不同的角色提供不同的接口,防止接口污染
    5. 依赖倒置原则(DIP)

      • 即高层模块不应依赖于低层模块,两者都应该依赖于抽象
      • 面向接口编程,让高层与低层都依赖接口(抽象)
      • 其他表述
        • 好莱坞原则:呆着别动,到时我会找你
        • 控制反转(IoC)或依赖注入
      • 比如利用抽象工厂模式解除两个类之间的依赖关系;利用Spring框架通过XML配置文件建立接口和具体类之间的关系
    6. 迪米特准则(LOD)

      • 即一个类对于所依赖的类知道的越少越好
      • 这是一个实用的职责分配模式,他指出应该与直接朋友通信,将系统的耦合度保持最低
      • 被依赖的类对外公开的方法要少,要建立中间人委托机制,进而面向接口编程

    良好的OO设计

    1. 可复用
    2. 可扩充
    3. 可维护
    4. 设计模式

    23种GoF设计模式

    设计模式分为类模式和对象模式,类模式处理类和派生类之间的继承关系,对象模式处理对象之间的组织关系。

  • 相关阅读:
    LeetCode Merge Two Sorted Lists 归并排序
    LeetCode Add Binary 两个二进制数相加
    LeetCode Climbing Stairs 爬楼梯
    034 Search for a Range 搜索范围
    033 Search in Rotated Sorted Array 搜索旋转排序数组
    032 Longest Valid Parentheses 最长有效括号
    031 Next Permutation 下一个排列
    030 Substring with Concatenation of All Words 与所有单词相关联的字串
    029 Divide Two Integers 两数相除
    028 Implement strStr() 实现 strStr()
  • 原文地址:https://www.cnblogs.com/pycrab/p/8905880.html
Copyright © 2011-2022 走看看