设计模式之美 精华总结 笔记
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);
保证重构不出错的技术手段:单元测试和代码的可测试性;
两种不同规模的重构:大重构(大规模高层次)和小重构(小规模低层次)。
五、总结
-
面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式等编码实现的基础。
-
设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。比如,“开闭原则”是很多设计模式(策略、模板等)的指导原则。
-
设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。应用设计模式的主要目的是提高代码的可扩展性。从抽象程度上来讲,设计原 则比设计模式更抽象。设计模式更加具体、更加可执行。
-
编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节、更加能落地。持续的小重构依赖的理论基础主要就是编程规范。
-
重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模式、编码规范这些理论。
六、附上总结图
以上是关于设计模式之美 精华总结 笔记的主要内容,如果未能解决你的问题,请参考以下文章