架构师第二周

用户头像
Tulane
关注
发布于: 2020 年 06 月 17 日
架构师第二周



框架VS工具

  • 框架调用应用程序代码

  • 应用程序代码调用工具

  • 框架是架构落地的保障



开闭原则(OCP)



  • 关键是抽象

  • 抽象后用多态实现

  • 不修改软件实体



依赖倒置原则(DIP)



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

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

  • 依赖倒置原则是框架设计核心原则

  • 依赖倒置一般用策略模式解决



举例:



Controller -> IService -> ServiceImpl
(不符合依赖倒置, 这种方式, Controller层依赖于Service, 调用Service定义方法)

Controller -> 功能接口(不关心谁实现) -> ServiceImpl
(符合依赖倒置, 这种方式, Controller规定了接口, ServiceImpl根据此规定实现方法)



DIP倒置了什么



  • 模块或包的依赖关系

  • 开发顺序和职责 (组织结构的改变, 分工的关系)



里式替换原则(LSP)



  • 子类型必须能替换基类

  • 子类有更大的访问控制

  • 子类的 契约 不能比基类更严格



如何解决不符合LSP的代码



  • 提取共性, 放到基类中

  • 改为组合 (使用 适配器 的方式)



单一职责原则(SRP)



  • 一个类只有一个会引起变化的点



接口分离原则(ISP)



  • 不强迫客户依赖不需要的方法

  • 不把这些方法暴露出来



SRP要做到很困难, 某些场景下无法分隔, 使用ISP接口隔离可以解决暴露出不必要方法的问题



用户头像

Tulane

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论

发布
暂无评论
架构师第二周