【第二周】框架设计

用户头像
云龙
关注
发布于: 2020 年 09 月 27 日



  • 编程语言的实质

  • 目的:用计算机来解决现实世界的问题。

  • 过程:在计算机所能理解的“模型”和现实世界之间建立联系。



  • 编程方法的演进

  • 汇编语言->高级语言->结构化程序->OOP



  • 编程的核心要素

  • 



  • 面向对象编程:

  • 对象: 状态、行为和标识

  • 三要素:

  • 封装性: 隐藏实现细节、定义接口

  • 继承性: IS-A关系、HAS-A关系(组合)

  • 多态性: 后期绑定(虚函数)、向上转型(Up Casting)

  • 目的:

  • 强内聚、低耦合

  • 从而使系统易扩展、更强壮、可移植、更简单



  • 框架 VS 工具:

  • 框架调用应用程序代码 -> 用框架保证架构的落地

  • 应用程序代码调用工具 -> 用工具提高开发效率



  • 坏代码的味道

  • 僵硬、脆弱、不可移植、导致误用的陷阱、晦涩、过渡设计、copy-paste代码



  • OOD原则

  • 开闭原则、里氏替换原则、依赖倒置原则、单一职责原则、接口隔离原则



  • 开闭原则OCP

  • 对扩展是开放的

  • 对更改是封闭的

  • 做到开闭原则的关键是抽象



  • 依赖倒置原则DIP

  • 高层模块不依赖底层模块,都依赖于抽象

  • 抽象出的接口层属于高层

  • 抽象不能依赖实现,而是实现依赖抽象

  • DIP倒置了模块或者包的依赖关系、开发顺序和职责

  • 好莱坞规则: Don't call me, I'll call you



  • Liskov替换原则(LSP):

  • 子类型必须能够替换掉他们的基类型, 子类的‘契约’不能比基类更‘严格’

  • 需要看场景上下文来判断是否符合LSP。

  • 继承 VS 组合:都是OOP的两种扩展手段。

  • 继承的缺点:

  • “白盒复用”-破坏了封装,继承将基类更多的细节暴露给子类

  • 基类改变时,会层层影响其下的子类。

  • 继承是静态的,无法在运行时改变组合

  • 类数量的爆炸。

  • 可能违反LSP的征兆

  • 派生类中的退化函数

  • 派生类中跑出基类不会产生的异常



  • 单一职责原则(SRP):

  • 又被称为内聚性原则

  • 一个类,只有一个引起它变化的原因



  • 接口分离原则(ISP):

  • 不应该强迫客户程序依赖他们不需要的方法。

  • SRP指出设计类时只有一种原因才能促使类发生改变, ISP指出设计接口时从客户的需要出发,强调不要让客户看到他们不需要的方法。



用户头像

云龙

关注

还未添加个人签名 2018.03.30 加入

还未添加个人简介

评论

发布
暂无评论
【第二周】框架设计