博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件架构模式---分层架构
阅读量:5301 次
发布时间:2019-06-14

本文共 1426 字,大约阅读时间需要 4 分钟。

一、什么是架构模式?

        刚做了软考题,有一道关于提问设计模式是什么的,设计模式是一套解决类似问题的经验的总结。采用设计模式的目的是为了可重用代码。而架构模式也一个通用的、可重用的解决方案。我觉得他们的区别是,设计模式跟代码更有直接关系,

架构模式站在系统全局的角度解决子系统之间的关系、功能需求与非功能的优先级与取舍原则等。

二、分层模式

(参考https://www.cnblogs.com/IcanFixIt/p/7518146.html)

       这种模式也称为多层体系架构模式。它可以用来构造可以分解为子任务组的程序,每个子任务都处于一个特定的抽象级别。每个层都为下一个提供更高层次服务。分层模式的关键点在于确定依赖:即通过分层,可以限制子系统间的依赖关系,

使系统以更松散的方式耦合,从而更易于维护。

一般信息系统中最常见的是如下所列的4层:表示层,业务逻辑层,持久层,应用层。

模式介绍:

  • 表示层(也称为UI层):主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
  • 应用层(也称为服务层):服务层的作用就是将表现层与业务逻辑层之间完成解耦。那么表现层中就不会出现任何的业务代码,当然这样带来的好处也是显而易见的,就是当我们修改业务层代码时,我们不需要修改表现层的代码,

当然如果服务层设计的不好,那么可能会造成反效果。

  • 业务逻辑层(也称为领域层):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。无疑是系统架构中体现核心价值的部分。它的关注点

主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域逻辑有关

  • 数据访问层(也称为持久化层):主要是针对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。

使用场景:

  • 一般的桌面应用程序
  • 电子商务Web应用程

 

模式特点

 

  •  每个模块必须属于某个层次,为上层提供服务;同时委派任务给下层模块。
  • 任何一个模块,都不能逆层次调用;属于下层的模块,不得调用(耦合)上层或上层次的模块。任何一个模块,都不得跨层次调用。

使用场景:

设计模式实现:

  门面模式 ——我们对于每个模块或者每个层次都会设计一个“门面”来降低耦合的复杂程度。

  策略模式——抽象层次会隐藏底层的实现细节,这就是策略模式最基本的设计,我们往往会把上层作为功能接口,下层作为可选的策略来实现。

优点

1、开发人员可以只关注整个结构中的其中某一层;

2、可以很容易的用新的实现来替换原有层次的实现;

3、可以降低层与层之间的依赖;

4、有利于标准化;

5、利于各层逻辑的复用。

6、结构更加的明确

7、在后期维护的时候,极大地降低了维护成本和维护时间

缺点

1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

3、增加了开发成本。

转载于:https://www.cnblogs.com/jingxiaopu/p/9068492.html

你可能感兴趣的文章
ASP.NET 使用ajaxupload.js插件出现上传较大文件失败的解决方法
查看>>
jenkins搭建
查看>>
C#中使用Split分隔字符串的技巧
查看>>
(springboot)freemarker(二)
查看>>
linux下golang gRPC配置详解
查看>>
mongodb 简单使用说明
查看>>
eclipse的调试方法的简单介绍
查看>>
OneAPM 云监控部署与试用体验
查看>>
加固linux
查看>>
wget 升级
查看>>
为什么需要大数据安全分析?
查看>>
day13.字典复习
查看>>
IPSP问题
查看>>
(转)Java中的String为什么是不可变的? -- String源码分析
查看>>
HNU 10362 A+B for Input-Output Practice (II)
查看>>
iOS——UIButton响应传参数
查看>>
【转帖】关于'eh vector constructor/destructor iterator'的讨论及类的内存分布模型
查看>>
十. 图形界面(GUI)设计9.列表和组合框
查看>>
10.17动手动脑
查看>>
操作系统实验一:并发程序设计
查看>>