0%

设计模式之美-笔记

一、抛砖引玉

  • 数据结构和算法:是教如何写高效代码
  • 设计模式:如何写出可扩展、可读、可维护的高质量代码

二、头脑风暴

  • 设计模式
    • 引出问题(开发通用模块注意问题?)
      • 如何分层、分模块?
      • 应该怎么划分类?
      • 每个类应该具有哪些属性、方法?
      • 怎么设计类之间的交互?
      • 该用继承还是组合?
      • 该使用接口还是抽象类?
      • 怎么做到解耦、高内聚低耦合?
      • 该用单例模式还是静态方法?
      • 用工厂模式创建对象还是直接 new 出来?
      • 如何避免引入设计模式提高扩展性的同时带来的降低可读性问题?
    • 评价标准:代码质量
      • 可维护性
        • 在不破坏原有代码设计、不引入新 bug 情况下,能够快速修改或添加代码
      • 可读性
        • 代码是否符合编码规范
        • 命名是否达意
        • 注释是否详尽
        • 函数是否长短合适
        • 模块划分是否清晰
        • 是否符合高内聚低耦合等
      • 可扩展性
        • 对修改关闭,对扩展开放
      • 灵活性
        • 易扩展、易复用、易使用
      • 简洁性(简单、复杂)
        • 思从深而行从简
        • KISS:keep it simple,stupid
      • 可复用性
        • DRY:Donot repeat yourself
        • 继承多态(面向对象特性)
        • 单一职责(设计原则)
        • 解耦、高内聚、低耦合(重构技巧)
      • 可测试性
        • 重构时
    • 设计思想(面向对象)-基础
      • 封装、抽象、继承、多态
      • 面向对象编程 vs 面向过程编程
      • 面向对象分析、设计、编程
      • 接口 vs 抽象类
      • 基于接口而非实现编程
      • 多用组合少用继承
      • 贫血模型和充血模型
    • 设计原则-场景
      • SOLID 原则-SRP 单一职责原则
      • SOLID 原则-OCP 开闭原则
      • SOLID 原则-LSP 里氏替换原则
      • SOLID 原则-ISP 接口隔离原则
      • SOLID 原则-DIP 依赖倒置原则
      • DRY 原则、KISS 原则、YAGNI 原则、LOD 法则
    • 设计模式-设计问题
      • 创建型
        • 单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式
        • 原型模式
      • 结构型
        • 代理模式、桥接模式、装饰者模式、适配器模式
        • 门面模式、组合模式、享元模式
      • 行为型
        • 观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式
        • 访问者模式、备忘录模式、命令模式、解释器模式、中介模式
    • 编码规范-可读性
      • 20 条最快速改善代码质量的编程规范
    • 重构技巧-保证质量
      • 目的 why、对象 what、时机 when、方法 how
      • 单元测试和代码的可测试性
      • 大重构(大规模高层次)
      • 小重构(小规模低层次)

三、附录

代码质量描述

灵活性(flexibility)、可扩展性(extensibility)、可维护性(maintainability)、可读性(readability)、可理解性(understandability)、易修改性(changeability)、可复用(reusability)、可测试性(testability)、模块化(modularity)、高内聚低耦合(high cohesion loose coupling)、高效(high effciency)、高性能(high performance)、安全性(security)、兼容性(compatibility)、易用性(usability)、整洁(clean)、清晰(clarity)、简单(simple)、直接(straightforward)、少即是多(less code is more)、文档详尽(well-documented)、分层清晰(well-layered)、正确性(correctness、bug free)、健壮性(robustness)、鲁棒性(robustness)、可用性(reliability)、可伸缩性(scalability)、稳定性(stability)、优雅(elegant)、好(good)、坏(bad)……

主流思想

面向过程、面向对象、函数式编程

设计模式-类模式