引子

常常,我们会被一堆名字绕晕:架构风格、架构模式、设计风格、设计模式、架构设计。查看维基百科:目前业内也没有明确的理论,但是我们现在可以识别出许多架构模式(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/缓存等一套通用解决方案。这也是架构师必会技能之一:架构设计图。



常见的设计模式:



  • 单例模式
  • 工厂模式
  • 策略模式