软件架构:5种你应该知道的模式

栏目: 后端 · 发布时间: 6年前

内容简介:Singleton(单例模式)、仓储模式(repository)、工厂模式(factory)、建造者模式(builder)、装饰模式(decorator)……大概每个上课听讲的程序员都不会陌生——软件的设计模式为我们提供了针对现有的、重复出现的问题以可靠的解决方案。在软件架构方面同样存在类似的机制,通用的、可重用的解决方案在给定上下文中的软件体系结构中经常出现的问题。不同的软件架构模式各有千秋,以下是目前较为主流的5种软件架构模式。分层模式大概是最知名的软件架构模式之一,有大量的开发者使用,但并不知道它的

Singleton(单例模式)、仓储模式(repository)、工厂模式(factory)、建造者模式(builder)、装饰模式(decorator)……大概每个上课听讲的 程序员 都不会陌生——软件的 设计模式 为我们提供了针对现有的、重复出现的问题以可靠的解决方案。

在软件架构方面同样存在类似的机制,通用的、可重用的解决方案在给定上下文中的软件体系结构中经常出现的问题。不同的软件架构模式各有千秋,以下是目前较为主流的5种软件架构模式。

分层模式(Layered Pattern)

分层模式大概是最知名的软件架构模式之一,有大量的开发者使用,但并不知道它的名字。分层模式将代码拆分为“层”,每个层都有一定的责任,并为更高“层”服务。

分层模式并没有规定层的数量,但通常会有以下结构:

  • 表现层 / UI层
  • 应用层
  • 业务/域(domain)层
  • 持久/数据访问层
  • 数据库层

分层模式的想法是用户通过执行某些动作(例如点击按钮)在表现层启动一段代码。随后,表现层调用应用层、进入业务层,最后持久层将所有内容存储在数据库中。简单来说,分层模式中的高层调用并依赖低层。

软件架构:5种你应该知道的模式

根据应用复杂程度,我们会看到很多相应的变体。例如某些应用会省略应用层,而某些应用会添加缓存层,甚至会出现两层合一的情况。

层责任

如上所述,每层有每层的责任。表现层包含应用的图形设计和处理交互的代码。理论上来讲,我们不应该在这一层添加任何与user interface无关的逻辑。

业务层是放置特定业务问题模型和逻辑的地方。

应用层位于业务层和和表现层之间。一方面为表现层提供业务层抽象,另一方面为应用层提供放置某些不适合放置于业务层或表现层的某些协调逻辑。

持久层包含访问数据库层的代码,而数据库层是底层数据库技术,例如SQL Server、MongoDB。持久层是用于操作数据库的代码集:SQL语句、连接详情等。

优势

  • 大多数开发者都很熟悉
  • 一种用于编写组织良好并且可测试应用的简单方法

劣势

  • 分层模式往往会导致应用的“一体化”并使之变得难以拆分
  • 开发者往往会发现自己编写了大量的代码来传递不同的层,而没有在这些层里添加任何值。如果我们做的只是编写一个简单的CRUD应用,分层模式可能有点过分了。

适用于

  • 标准的、不仅仅用于完成CRUD操作的业务线(line-of-business)应用

微内核模式(Microkernel)

当应用程序有一组核心职责和一组可互换的部件时,微内核模式(或插件模式)非常有用。微内核将提供应用程序的入口点和一般流程,而不需要真正了解不同的插件在做什么。

软件架构:5种你应该知道的模式

例如任务调度,微内核可以包含所有的调度和触发逻辑,而插件负责特定的任务。只要插件遵循特定的API,微内核就可以出发它们,而不需要了解实现的细节。

另一个例子是工作流。工作流的实现包含诸如不同步骤的顺序、评估步骤的结果、决定下一步的内容等概念,步骤的的具体实现对于工作流的核心代码并不重要。

优势

  • 灵活性

以上所述就是小编给大家介绍的《软件架构:5种你应该知道的模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ajax开发精要

Ajax开发精要

柯自聪 / 电子工业出版社 / 2006 / 45.00

书籍目录: 概念篇 第1章 Ajax介绍 2 1.1 Ajax的由来 2 1.2 Ajax的定义 3 1.3 Web应用程序的解决方案 5 1.4 Ajax的工作方式 7 1.5 小结 8 第2章 B/S请求响应机制与Web开发模式 9 2.1 HTTP请求响应模型 9 2.2 B/S架构的请求响应机......一起来看看 《Ajax开发精要》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码