引子
常常,我们会被一堆名字绕晕:架构风格、架构模式、设计风格、设计模式、架构设计。查看维基百科:目前业内也没有明确的理论,但是我们现在可以识别出许多架构模式(Architecture Patterns)或风格(Architecture Styles),它们构成了软件架构师的基本技能。本文就来捋一捋这些词语。
一、名词解释
我们把这几个次拆解开得到4个基础词汇,其中架构和设计是一组,风格和模式是一组。
- 架构:架构专注于可以被多个设计所利用的抽象。
- 设计:设计是建立特定事物的具体计划。架构也是一种设计。专注于架构的设计。架构设计就是这个意思。这也是为啥架构师很多时候是不需要写代码的。理论这一块玩的透透的。
- 风格:某一特定应用领域中系统组织方式的惯用模式。事物的代表性元素特性。
- 模式:指事物的标准样式,是结构主义用语。指用来说明事物结构的主观理性形式。
二、概念剖析
- 1.风格是模式的一种抽象
- 2.架构是设计的一种抽象
如上图所示,风格也是一种模式,架构也是一种设计。架构风格是一种顶级抽象。其次是架构模式,设计模式是最底层实现落地层面的。
- 架构风格是最高抽象级别的应用设计。
- 架构模式是实现架构风格的一种方式。
- 设计风格就是设计中的某些风格,架构风格就是专注于架构设计的风格。
- 架构设计就是专注于架构的设计。
- 设计模式是解决局部问题的方法。GOF95的23种设计模式,是最具认可度的。
三、举例说明
- 单体应用Monolithic application
- 分层Layered
- 事件驱动Event-driven
- 发布订阅Publish-subscribe
- CS架构Client-server
- 面向服务Service-oriented
- MVC:常见于后端架构。springbootMVC
- MVVM:常见于前端架构。例如国内三大框架之一的vue.js
常见的设计风格:
- 从小(模块\功能)到大(系统)的设计中体现出来的一种style。上面列的架构风格都可以说是设计风格。
常见的架构设计:
- springCloud架构设计。包含gateway、feign、eureka/nacos、ribbon、hytrix、某DB/缓存等一套通用解决方案。这也是架构师必会技能之一:架构设计图。
常见的设计模式:
- 单例模式
- 工厂模式
- 策略模式