设计模式之美 精华总结 笔记

Posted 深林无鹿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之美 精华总结 笔记相关的知识,希望对你有一定的参考价值。

设计模式之美 精华总结 笔记(一)

一、为什么学习设计模式

1、避免写烂代码

2、提高复杂代码的设计和开发能力

3、读源码、学框架事半功倍

二、如何评判代码质量的高低

常见的形容词:

灵活性(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) ……

几个最常用,最重要的标准:

可维护性、可读性、可扩展性、灵活性、简洁性(简单、复杂)、可复用性、可测试性。

1、易维护性 (maintainability)

代码易维护”就是指,在不破坏原有代码设计、不引入新的 bug 的情况 下,能够快速地修改或者添加代码。所谓“代码不易维护”就是指,修改或者添加代码需要 冒着极大的引入新 bug 的风险,并且需要花费很长的时间才能完成。

2、可读性 (readability)

如何评价一段代码的可读性:

代码是否符合编码规范、命名是否达意、注释是否详尽、函数是否长短合适、模块划分是否清晰、是否符合高内聚低耦合等等

3、可扩展性 (extensiblity)

在不修改或少量修改原有代码的情况下,通过扩展的方式添加新的功能代码

一项重要的设计原则:对修改关闭,对扩展开放

4、灵活性 (flexibility)

5、简洁性 (simplicity)

KISS 原则:“Keep It Simple, Stupid”。这个原则说的意思就是,尽量保持代码简单。代码简单、逻辑清晰,也就意味 着易读、易维护。我们在编写代码的时候,往往也会把简单、清晰放到首位。

不过,很多编程经验不足的程序员会觉得,简单的代码没有技术含量,喜欢在项目中引入一 些复杂的设计模式,觉得这样才能体现自己的技术水平。实际上,思从深而行从简,真正的 高手能云淡风轻地用最简单的方法解决最复杂的问题。这也是一个编程老手跟编程新手的本 质区别之一。

6、可复用性(reusability)

尽量减少重复代码的编写,复用已有的代码。

继承、多态存在的目的之一,就是为了提高代码的可复用性

一项重要的设计原则:单一职责原则

7、可测试性(testability)

(评论区有个朋友说的TDD - Test Driven Development)

三、如何实现高质量代码的编写

掌握更加细化的编程思想以及更能落地的编程方法论。

包含面向对象的设计思想、设计原则、设计模式、编码规范、重构技巧

四、面向对象、设计原则、设计模式、编程规范、重构 五者关系、

前情提要:

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

1、设计原则

SOLID 原则 -SRP 单一职责原则

SOLID 原则 -OCP 开闭原则

SOLID 原则 -LSP 里式替换原则

SOLID 原则 -ISP 接口隔离原则

SOLID 原则 -DIP 依赖倒置原则

DRY 原则(don’t repeat yourself)、KISS 原则(keep it simple and stupid)、YAGNI 原则(you Ian’t gonna need it)、LOD 法则(law of demeter)

2、设计模式(经典23种)

三种:创建型、结构型、行为型

  • 创建型:

常用的有: 单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。

不常用的有: 原型模式。

  • 结构型:

常用的有: 代理模式、桥接模式、装饰者模式、适配器模式。

不常用的有: 门面模式、组合模式、享元模式。

  • 行为型:

常用的有: 观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。

不常用的有: 访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

3、编码规范

4、代码重构

重构的目的(why)、对象(what)、时机(when)、方法(how);

保证重构不出错的技术手段:单元测试和代码的可测试性;

两种不同规模的重构:大重构(大规模高层次)和小重构(小规模低层次)。

五、总结

  • 面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式等编码实现的基础。

  • 设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。比如,“开闭原则”是很多设计模式(策略、模板等)的指导原则。

  • 设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。应用设计模式的主要目的是提高代码的可扩展性。从抽象程度上来讲,设计原 则比设计模式更抽象。设计模式更加具体、更加可执行。

  • 编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节、更加能落地。持续的小重构依赖的理论基础主要就是编程规范。

  • 重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模式、编码规范这些理论。

六、附上总结图

在这里插入图片描述

以上是关于设计模式之美 精华总结 笔记的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之美(c++)-笔记-44-工厂模式

《架构之美》阅读笔记06

《架构之美》阅读笔记05

设计模式之美(c++)-笔记-56-观察者模式

设计模式之美(c++)-笔记-56-观察者模式

设计模式之美总结