本文主要是介绍设计模式学习笔记 - 学前简述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.为什么学习设计模式?
学习设计模式的原因:
- 应对面试中的设计模式相关问题;
- 写出高质量代码,告别让人吐槽的烂代码;
- 提高复杂代码的设计和开发能力
- 让读源码、学习框架爱事半功倍;
- 为职场发展铺垫。
设计模式作为一门与编码、开发有着直接关系的基础知识,是你现在就要开始学习的。早点学习,以后的项目就都可以拿来锻炼,每写一行代码都是对内功的利用和加深,是可以收益整个事业生涯的一个技能。
2.如何写出高质量代码,如何评价代码质量的好坏?
2.1 如何评价代码质量的高低?
代码质量的评价有很强的主观性,描述代码质量的词汇也有很多,比如可读性、可维护性、灵活、优雅、简洁等,这些是从不同的维度去评价代码质量的。它们之间相互关联,并不是独立的,比如代码的可读性好、可扩展性好就意味着代码的可维护性好。代码质量的高低是一个综合各种因素得到的结论。所以,不能通过单一的维度去评价一段代码的好坏。
2.2 常量的评价标准有哪几个?
一般,常用到的几个评价代码质量的标准是:
- 可维护性
- 可读性
- 可扩展性
- 灵活性
- 简洁性
- 可复用性
- 可测试性。
其中,可维护性、可读性、可扩展性又是使用最多、最重要的三个评价标准。
2.3 如何写出高质量的代码?
要写出高质量的代码,我们就要掌握一些更加细化、更加能落地的编程方法论,这就包含面向对象设计思想、设计原则、设计模式、编码规范、重构技巧等,这就是后面学习的重点。
3.面向对象、设计原则、设计模式、编码规范、重构的关系
面向对象
目前主流的编程风格有三种,分别是面向过程、面向对象和函数式编程。面向对象这种编程风格又是其中最主流的。
关于面向对象,你需要掌握下面这 7 大知识点:
- 面向对象的四大特性:封装、抽象、继承、多态。
- 面向对象编码与面向过程的区别和联系
- 面向对象分析、面向对象设计和面向对象编程
- 接口和抽象类的区别以及各自的应用场景
- 基于接口而非实现类编程的设计思想
- 多用组合,少用继承的设计思想
- 面向过程的贫血模式和面向对象的充血模型
设计原则
设计原则是知道我们代码设计的一些经验总结。有如下几种常用的设计原则:
- SOLID 原则 -
SRP
单一职责 - SOLID 原则 -
OCP
开闭原则 - SOLID 原则 -
LSP
里氏替换原则 - SOLID 原则 -
ISP
接口隔离原则 - SOLID 原则 -
DIP
依赖倒置原则 DRY
原则、KISS
原则、YAGNI
原则、LOD
原则
设计模式
设计模式是针对软件开发中经常遇到的一些涉及问题,总结出来的一套解决方案或设计思想。设计模式的学习难点是了解他们都能解决哪些问题,掌握典型的应用常见,并懂得不过度应用。
设计模式一共有 23 种,可分为三大类:创建型、结构性和行为型。对于这 23 种设计模式的学习,我们要有侧重点,因为有些模式比较常用,有些模式是很少被用到。对于常用的设计模式,我们要多花时间掌握;对于不常用的设计模式,只需要稍微了解即可。
1. 创建型
常用的有:
- 单例模式
- 工厂模式(工厂方法和抽象工厂)
- 建造者模式
不常用的有:
- 原型模式
2. 结构型
常用的有:
- 代理模式
- 桥接模式
- 装饰者模式
- 适配器模式
不常用的有:
- 门面模式
- 组合模式
- 享元模式
3.行为型
常用的有:
- 观察者模式
- 模板模式
- 策略模式
- 职责链模式
- 迭代器模式
- 状态模式
不常用的有:
- 访问者模式
- 备忘录模式
- 命令模式
- 解释器模式
- 中介模式
编程规范
编程规范主要解决代码的可读性问题。编程规范相对于设计原则、设计模式,更加具体、更加侧重代码细节。即使,你对设计原则不熟悉、对设计模式不了解,但你最起码要掌握基本的编码规范,比如给变量、类、函数命名、如何写代码注释、函数不宜过长、参数不能过多等等。
对于编码规范,有很多书籍以及讲得很好了(比如《重构》《代码大全》《代码整洁之道》等)。而且,每条编码规范都非常简单、非常明确,比较偏向记忆,只需要照着来就可以了。
持续地小重构依赖的理论基础主要就是编程规范。
除了编码规范,后面还会介绍一些代码的坏味道
,让你知道什么样的代码是不符合规范的,应如何优化。
参照编码规范,可以写出可读性好的代码;参照代码的坏味道,你可以找出代码存在的可读性问题。
代码重构
在软件开发中,只要软件在不停地迭代,就没有一劳永逸的设计。随着需求的变化,代码的不停堆砌,原有的设计必定会存在这样那样的问题。针对这些问题,我们就需要进行代码重构。重构是软件开发过程中非常重要的环节,持续重构是保持代码质量不下降的有效手段,能有效避免代码腐化到无可救药的地步。
而重构就是根据前面提到的面向对象设计思想、设计原则、设计模式、编码规范,来进行的。实际上,设计思想、设计原则、设计模式一个最重要的应用常见就是在重构的时候。
虽然设计模式可以提高代码的可扩展性,但过度不恰当的使用,也会增加代码的复杂度
,影响代码的可读性。在开发初期,除非必须,我们一定不要过度设计,应用复杂的设计模式。而是当代码出现问题的时候,我们再针对问题,应用原则和模式进行重构。这样就能有效避免前期的过度设计。
对于重构,你需要掌握以下几个知识点:
- 重构的目的(why)、对象(what)、时机(when)、方法(how)。
- 保证重构不出错的技术手段:单元测试和代码的可测试性。
- 两种不同规模的重构:大重构(大规模高层次)和小重构(小规模、低层次)。
五者之间的联系
关于面向对象、设计原则、设计模式、编程规范和重构,这五者的关系,我们梳理下:
- 面向对象编程因为其丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式等编码实现的基础。
- 设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。比如“开闭原则”是很多设计模式(策略、模板等)的指导原则。
- 设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。应用设计模式的主要目的是提供代码的可扩展性。从抽象程度上来讲,设计原则比设计模式更抽象。设计模式更加具体、更加可执行。
- 编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节、更加能落地。持续地小重构依赖的理论基础主要就是编程规范。
- 重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模式、编码规范这些理论。
实际上,面向对象、设计原则、设计模式、编程规范、代码重构,这五者都是保持或提高代码质量的方法,本质上都是服务于编写高质量代码这一件事的。
这篇关于设计模式学习笔记 - 学前简述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!