学习设计模式的意义
为什么要学习设计模式?
1应付面试
2告别令人吐槽的代码
3提高复杂代码的设计和编写能力
4让读源码、学框架事半功倍
5为职场发展做铺垫
从哪些维度评价代码质量
评价带有主观性,也是个综合各种因素得到的结论。
可读性、可维护性、可扩展性 --最重要的3个
灵活性、优雅、简洁 、可复用性、可测试性 等不同维度
如何写出高质量的代码?
掌握更细化、更能落地的编程方法论
包含:面向对象设计思想、设计原则、设计模式、编码规范、重构技巧
面向对象设计思想、设计原则、设计模式、编码规范、重构 五者之间的关系?
面向对象 :
主流编程范式: 面向过程、面向对象、函数式
面向对象编程具有丰富的特性(抽象、封装、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、模式的基础。
7大知识点:
面向对象的四大特性:封装、抽象、继承、多态
面向对象编程与面向过程编程的区别和联系
面向对象分析、面向对象设计、面向对象编程
接口和抽象类的区别以及各自的应用场景
基于接口而非实现编程的设计思想
多用组合少用继承的设计思想
面向过程的贫血模型和面向对象的充血模型
设计原则,S是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。:
SOLID 原则 -SRP 单一职责原则
SOLID 原则 -OCP 开闭原则
SOLID 原则 -LSP 里式替换原则
SOLID 原则 -ISP 接口隔离原则
SOLID 原则 -DIP 依赖倒置原则
DRY 原则、KISS 原则、YAGNI 原则、LOD 法则设计模式
设计模式:针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。经典的23个,随着编程语言的演进,有的反模式,还有新模式诞生。分为三大类:
创建型、
常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。
不常用的有:原型模式。
结构型、
常用的有:代理模式、桥接模式、装饰者模式、适配器模式。
不常用的有:门面模式、组合模式、享元模式。
行为型
常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。
不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。
编程规范
编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节。
代码重构。作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模式、编码规范这些理论。
3w1h,重构的目的(why)、对象(what)、时机(when)、方法(how);
保证重构不出错的技术手段:单元测试和代码的可测试性;
大重构-大规模高层次;小重构-小规模低层次。
实际上,面向对象、设计原则、设计模式、编程规范、代码重构,都是保持或者提高代码质量的方法论,本质上都是服务于编写高质量代码这一件事。当我们看清这个本质之后,很多事情怎么做就清楚了,很多选择怎么选也清楚了。比如,在某个场景下,该不该用这个设计模式,那就看能不能提高代码的可扩展性;要不要重构,那就看重代码是否存在可读、可维护问题等。