这是一篇索引文章

本文所有未进行有效链接的站内文章其实已经基本写好了,待进一步润色之后会陆续上线。

编程范式与编程风格

常见的编程范式/编程风格:

不同的编程范式之间并不是截然不同的,总是有一些相同的编程规则。比如,不管是面向过程、面向对象还是函数式编程,它们都有变量、函数的概念,最顶层都要有 main 函数执行入口,来组装编程单元(类、函数等)。只不过,面向对象的编程单元是类或对象,面向过程的编程单元是函数,函数式编程的编程单元是无状态函数。

设计原则

站内文章设计原则 文章中介绍 SOLID 等代码编写和设计原则。

设计模式

设计模式是指针对软件开发过程中重复发生的问题的解决方法。其中以被称为 Gang of Four 整理出的 23 种设计模式最为有名。除此以外还有其他设计模式,参考:

设计模式不是万能的,我们需要明确知道自己的软件中存在什么样的问题,明确设计模式可以解决什么问题,才能选出合适的设计模式。设计模式重要性在于快速掌握经验丰富的开发人员才具有的知识和经验,但也没必要机械地背下来。

GoF 23 经典的设计模式及延伸

上世纪 90 年代,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合作出版了《Design Patterns: Elements of Reusable Object-Oriented Software》一书,中文译名为《设计模式 - 可复用的面向对象软件元素》。该书首次提到了软件开发中设计模式的概念,并收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑。

image.png

四位作者合称 GoF(四人,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下面向对象设计原则:

  • 对接口编程而不是对实现编程。
  • 优先使用对象组合而不是继承。

因此,书中提到的 23 中设计模式,也称为经典的「GoF 设计模式」。

模式分类

本科时期我的简记

  • 创建型:建造单例原型工厂
  • 结构型:ABCompositeDFP(不包含创建型),250830 或「想焖主包」(享门组包 Wrapper)。
  • 行为型:剩下的都是行为型。

创建型:解决对象创建的问题

创建型模式 创建类的特点
单例模式 创建全局唯一的对象
工厂模式 创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。
建造者模式 创建复杂对象,可以通过设置不同的可选参数,「定制化」地创建不同的对象
原型模式 创建成本比较大的对象,利用对已有对象进行复制的方式进行创建,以达到节省创建时间的目的。

结构型:一些类或对象组合在一起的经典结构

行为型:类和对象之间的交互

设计模式之间的区别

23 种设计模式可进一步划分为创建型、组合型和行为型设计模式。

每个设计模式都应该由两部分组成:第一部分是应用场景,即这个模式可以解决哪类问题;第二部分是解决方案,即这个模式的设计思路和具体的代码实现。如果只观察设计模式的代码实现,你会发现一些模式是十分相似的:

但设计模式之间的主要区别还是在于设计意图,即应用场景。对于某些模式之前的相似性比较,相关设计模式文章中会有所涉及。

「用类/示例来表示 XXX」的模式

《图解设计模式》结城浩

在面向对象编程中,是用类表示对象的。也就是说,程序的设计者需要考虑用类来表示什么东西。类对应的东西可能存在于真实世界中,也可能不存在于真实世界中。对于后者,可能有人看到代码后会感到吃惊:这些东西居然也可以是类啊。

「用类/示例来表示 XXX」的模式均为行为型设计模式:

多线程的设计模式

上面 GoF 23 个经典设计模式中部分模式也有多线程的实现,如:

此外,一些和多线程有关的设计模式有:

本文参考