第2章 面向对象、设计原则、设计模式、编码规范、重构,这五者有何关系?

面向对象

现在,主流的编程范式或者是编程风格有三种,分别是面向过程、面向对象和函数式编程。现在比较流行的编程语言大部分都是面向对象编程语言。大部分项目也是基于面向对象编程风格开发的。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。

设计原则

设计原则是指导我们代码设计的一些经验总结。对于每一种设计原则,我们需要掌握它的设计初衷,能解决哪些编程问题,有哪些应用场景。只有这样,我们才能在项目中灵活恰当地应用这些原则。主要有以下常用的几个:

  • SOLID原则-SRP 单一职责原则
  • SOLID原则-OCP 开闭原则
  • SOLID原则-LSP 里氏替换原则
  • SOLID原则-ISP 接口隔离原则
  • SOLID原则-DIP 依赖倒置原则
  • DRY原则、KISS原则、YAGNI原则、LOD原则

设计模式

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

大部分设计模式要解决的都是代码的可扩展性问题。设计模式相对于设计原则来说,没有那么抽象,而且大部分都不难理解,代码实现也并不复杂。

经典的设计模式有23种。它们分为三大类:创建型、结构型、行为型。创建型主要是为创建对象的方式而设计,结构型主要是为组合对象而设计,行为型主要是处理对象间信号传递、协同工作而设计。

按照类型和是否常用,进行简单分类,如下:

1.创建型
常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。
不常用的有:原型模式。

2.结构型
常用的有:代理模式、桥接模式、装饰者模式、适配器模式。
不常用的有:门面模式、组合模式、享元模式。

3.行为型
常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式
不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

编程规范

编程规范主要解决的是代码可读性问题。编程规范相对于设计原则、设计模式,更加具体、更加偏重代码细节。你最起码要掌握最基本的编码规范,比如,如何给变量、类、函数命名,如何写代码注释,函数不宜过长、参数不宜过多等。

代码重构

重构是软件开发中非常重要的一环。持续重构是保持代码质量不下降的有效手段,能有效避免代码腐化到无可救药的地步。
而重构的工具就是那些面向对象设计思想、设计原则、设计模式、编码规范。虽然设计模式可以提高代码的可扩展性,但过度不恰当地使用,也会增加代码的复杂度,影响代码的可读性。在开发初期,除非特别必要,我们一定不要过度设计,不要应用复杂的设计模式。而是当代码出现问题的时候,我们再针对问题,应用原则和模式进行重构。

五者之间的联系

  • 面向对象编程因为其具有丰富的特性,可以实现很多复杂的设计思路,是很多设计原则、设计模式等编码实现的基础
  • 设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。
  • 设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。应用设计模式的主要目的是提高代码的可扩展性。
  • 编程规范主要解决的是代码的可读性问题。编程规范相较于设计原则、设计模式,更加具体、更加偏重代码细节、更加能落地。持续的小重构依赖的理论基础主要就是编程规范。
  • 重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模式、编码规范这些理论。

实际上,面向对象、设计原则、设计模式、编码规范、代码重构,这五者都是保持或者提高代码质量的方法论,本质上都是服务于编写高质量代码这一件事的。当我们逐本追源,看清这个本质后,很多事情怎么做就清楚了,很多选择怎么选也清楚了。比如,在某个场景下,该不该用这个设计模式,那就看能不能提高代码的可扩展性;要不要重构,那就看代码是否存在可读、可维护问题等。

你可能感兴趣的:(设计模式学习之旅,设计模式)