一、什么是架构模式?
第一节课结束以后一脸懵逼,我有了了很多问题,其中的大前提什么是软件架构模式?设计模式是一套解决类似问题的经验的总结。采用设计模式的目的是为了可重用代码。而架构模式也一个通用的、可重用的解决方案。我觉得他们的区别是,设计模式跟代码更有直接关系,
架构模式站在系统全局的角度解决子系统之间的关系、功能需求与非功能的优先级与取舍原则等。
二、分层模式
(参考https://www.cnblogs.com/IcanFixIt/p/7518146.html)
这种模式也称为多层体系架构模式。它可以用来构造可以分解为子任务组的程序,每个子任务都处于一个特定的抽象级别。每个层都为下一个提供更高层次服务。分层模式的关键点在于确定依赖:即通过分层,可以限制子系统间的依赖关系,
使系统以更松散的方式耦合,从而更易于维护。
一般信息系统中最常见的是如下所列的4层:表示层,业务逻辑层,持久层,应用层。
模式介绍:
- 表示层(也称为UI层):主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
- 应用层(也称为服务层):服务层的作用就是将表现层与业务逻辑层之间完成解耦。那么表现层中就不会出现任何的业务代码,当然这样带来的好处也是显而易见的,就是当我们修改业务层代码时,我们不需要修改表现层的代码,
当然如果服务层设计的不好,那么可能会造成反效果。
- 业务逻辑层(也称为领域层):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。无疑是系统架构中体现核心价值的部分。它的关注点
主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域逻辑有关
- 数据访问层(也称为持久化层):主要是针对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。
使用场景:
- 一般的桌面应用程序
- 电子商务Web应用程
模式特点
- 每个模块必须属于某个层次,为上层提供服务;同时委派任务给下层模块。
- 任何一个模块,都不能逆层次调用;属于下层的模块,不得调用(耦合)上层或上层次的模块。任何一个模块,都不得跨层次调用。
使用场景:
设计模式实现:
门面模式 ——我们对于每个模块或者每个层次都会设计一个“门面”来降低耦合的复杂程度。
策略模式——抽象层次会隐藏底层的实现细节,这就是策略模式最基本的设计,我们往往会把上层作为功能接口,下层作为可选的策略来实现。
优点
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
6、结构更加的明确
7、在后期维护的时候,极大地降低了维护成本和维护时间
缺点
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
3、增加了开发成本。
Docker 的另外两个话题: DockerHub 和 容器网络
Docker——理解好镜像和容器的关系
MapReduce 运行全过程解析
MySQL 之 Explain 输出分析
关于新手数组:样题:陶陶摘苹果
VirtualBox安装Ubuntu-18.04-Server笔记
做一个不复制粘贴的程序员[1]: 使用模板方法模式(2)- 对象更新比较器实例
做一个不复制粘贴的程序员[1]: 使用模板方法模式(1)- 分页查询实例
做一个不复制粘贴的程序员[0]: 概述
- 最新文章
-
MySQL 添加索引,删除索引及其用法
webpack篇,结合理论与实际,加以透彻分析!
关于javascript,多种函数封装!!
express的安装和新建项目流程!
React用脚手架实际开发项目!
React开发笔记
MongoDB常用数据库命令第三集
React的jsx语法,详细介绍和使用方法!
flux架构的详细介绍和使用!
redux的详细介绍和使用!
- 热门文章
-
React组件安装使用和生命周期函数
springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
Springboot 项目源码 Activiti6 工作流 vue.js html 跨域 前后分离 websocket即时通讯
springmvc4 mybatis 整合 框架源码 bootstrap html5 mysql oracle sqlsever spring SSM
java自适应响应式 企业网站源码 SSM 生成静态化 手机 平板 PC
开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?
记一次阿里巴巴一面的经历
老板让阿粉学习 flink 中的 Watermark,现在他出教程了
ibatis 核心原理解析!
hashCode和equals的区别