设计模式之总述

A1 为什么学设计模式

  1. 潜移默化提升对技术的理解
  2. 写出高效、可扩展、可读、可维护的高质量代码
  3. 应对面试
  4. 提高复杂代码设计和开发能力
  5. 读源码和学框架事半功倍

A2 何为高质量代码

最常见的标准:

  • 可维护性(maintainabilty)

    • 在不破坏原有代码设计、不引入新的Bug的情况下,能够快速地修改或者添加代码。
    • 具体:代码分层清晰、模块化好、高内聚低耦合、遵从基于接口而非实现编程的设计原则等。
  • 可读性(readability)

    • 符合编码规范、命名达意、注释详尽、函数长短合适、模块划分清晰、符合高内聚低耦合。
  • 可扩展性(extensibility)

    • 代码预留了一些功能扩展点,可把新功能代码,直接插到扩展点上,而不需要为添加一个功能而大动干戈,改动大量原始代码。
  • 灵活性(flexibility)

    • 易扩展,易复用,易用
  • 简洁性(simplicirty)

    • KISS原则:Keep It Simple, Stupid。
    • 尽量保持代码简单、逻辑清晰:易读、易维护。
    • 思从深而行从简,真正高手能云淡风轻地用最简单的方法解决最复杂的问题。
  • 可复用性(reusability)

    • 尽量减少重复代码的编写,复用已有的代码。
    • 联系DRY(Don`t Repeat Yourself)设计原则。
  • 可测试性(testability)

    • 从侧面展现代码是否高质量

A3 面向对象 设计原则 设计模式 编程规范 重构

3.1 面向对象

目前主流编程范式/风格:

  • 面向过程
  • 面向对象(最主流)
  • 函数式编程

重点:

  1. 四大特性:封装、抽象、继承、多态
  2. 与面向过程编程的区别和联系
  3. 面向对象分析、设计、编程
  4. 接口和抽象类的区别以及各自的应用场景
  5. 基于接口而非实现编程的设计思想
  6. 多用组合少用继承的设计思想
  7. 面向过程的贫血模型和面向对象的充血模型

3.2 设计原则

指导我们代码设计的一些经验总结。

常用设计原则:

  1. SOLOD 原则
    • SRP 单一职责原则
    • OCP 开闭原则
    • LSP 里氏替换原则
    • ISP 接口隔离原则
    • DIP 依赖倒置原则
  2. DRY 原则
  3. KISS 原则
  4. YAGNI 原则
  5. LOD 原则

3.3 设计模式

针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。

大部分设计模式都是解决代码的可扩展性。

经典设计模式23种。

主要分类:

  1. 创建型

    • 常用:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式
    • 不常用:原型模式
  2. 结构型

    • 常用:代理模式、桥接模式、装饰者模式、适配器模式
    • 不常用:门面模式、组合模式、享元模式
  3. 行为型

    • 常用:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式
    • 不常用:访问者模式、备忘录模式、命令模式、解释器模式、中介模式

3.4 编程规范

主要解决代码的可读性问题。

起码掌握基本的编码规范。

3.5 代码重构

因软件是不停迭代的,故代码需不停堆砌,原设计会存在一些问题,解决办法就是代码重构。

持续重构是保持代码质量不下降的有效手段。

重构的工具:面向对象设计思想、设计原则、设计模式、编码规范。

知识点:

  • 重构的目的(why)、对象(what)、时机(when)、方法(how);
  • 保证重构不出错的技术手段:单元测试和代码的可测试性;
  • 两种不同规模的重构:大重构(大规模高层次)和小重构(小规模低层次)。

3.6 五者关系

  1. 基础:面向对象

  2. 指导:设计原则

  3. 思路:设计模式

  4. 可读:编程规范

  5. 持续:重构

目的:保持或提高代码质量

串起来:

  • 面向对象的丰富特性,可实现多种复杂设计思路,为设计原则和设计模式等编码实现提供基础
  • 设计原则指导我们设计代码和代码模式的经验和总结。
  • 设计模式是总结的针对问题的解决方案和设计思路,提高代码可扩展性。
  • 编程规范解决代码可读性,持续的小重构依赖的理论基础主要就是编程规范。
  • 重构可使代码持续化,保持代码活力和质量。通过前四种理论实现。

A4 相关

下集:面向对象之总述

参考文献

极客时间:设计模式之美.王争。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoreDao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值