总结
管理变化,提高服用
两个手段: 分解vs抽象 梨、香蕉、苹果---->水果
八大原则:
- 依赖倒置原则(DIP)
- 开放封闭原则(OCP)
- 单一职责原则(SRP)
- Liskov替换原则(LSP)
- 接口隔离原则(ISP)
- 对象组合优于类继承
- 封装变化点
- 面向接口编程
重构技法:
- 静态→动态
- 早绑定→晚绑定
- 继承→组合
- 编译时依赖→>运行时依赖
- 紧耦合→>松耦合
红色部分不常用
![image-20210513204256739](https://gitee.com/xsm970228/images2020.9.5/raw/master/20210513204300.png)
几乎所有的模式都属于第三种
继承和组合的内存模型是一样的 classA内存的前一部分都是B(图一和图二)
继承->组合中的组合是跟指针组合(图三) 指针有灵活性,可以指向B,也可以指向B的子类(多态调用)
所有的模式都有稳定点和变化点
什么时候不用模式?
- 代码可读性很差时
- 需求理解还很浅时
- 变化没有显现时
- 不是系统的关键依赖点
- 项目没有复用价值时
- 项目将要发布时
经验之谈
- 不要为模式而模式
- 关注抽象类&接口
- 理清变化点和稳定点
- 审视依赖关系
- 要有Framework和Application的区隔思维
- 良好的设计是演化的结果
成长之路:
- “手中无剑,心中无剑”:见模式而不知
- “手中有剑,心中无剑":可以识别模式,作为应用开发人员使用模式
- “手中有剑,心中有剑":作为框架开发人员为应用设计某些模式
- “手中无剑,心中有剑”:忘掉模式,只有原则
感谢李建忠老师的讲解,对“抽象”这个词有了一些理解
- 视频参考:https://www.bilibili.com/video/BV1V5411w7qg
- 资料参考:https://github.com/19PDP/Bilibili-plus