首页 > 其他分享 >三层架构

三层架构

时间:2023-02-10 20:58:48浏览次数:36  
标签:逻辑 架构 表示层 访问 MVC 三层

JAVA三层架构:

(持久层)数据访问层(dao)
(业务层)业务逻辑层(services)
(表示层)表现层(view)

Java三层架构项目分层:

entity:
实体层,与数据库的某个表相关联。
dao:
数据访问层(data access object),与数据库的增删改查等方法的相关代码写在这。一般定义为dao层包括dao,daoImpl,分别为数据层接口和数据层实现类
service:
业务层,处理业务操作,可以与外部系统交流,算法的实现,图片的处理等。一般项目都用service比较多。【service:供外部调用,主要是为了降低耦合,面向接口、组件编程,具体的服务类,能产生实际效果和影响的类放于此。
impl:
实现层,定义的接口,implement的缩写。
view:
表示层,负责页面的渲染以及特效的显示等等(用户操作界面)
util:
是工具层,utility是存放工具类相关的JAVA代码的.


根据三层架构进行分包:

  1. 视图层
    com.hpe.view 用户界面
  2. 服务逻辑层
    com.hpe.service 业务处理
  3. 数据持久层
    com.hpe.dao 数据库访问
    com.hpe.po 实体类
    com.hpe.vo 视图类(联表查询实体类)
    另:工具类
    com.util 常用工具类封装

三层与MVC的区别:

很多人容易把三层模式与MVC模式混淆,三层与MVC的最不同的地方在于三层是没有Controller控制器的概念。虽然同样是架构级别的,三层与MVC相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。MVC没有把业务的逻辑访问看成两个层 ,这是采用三层架构或MVC搭建程序最主要的区别。当然了,在三层中也提到了Model概念,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层” 中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

在三层中JSP与Servlet代码都属于表示层,业务逻辑层则是完成业务规则的实体类,数据访问层则是JDBC等代码,示意图:

img

三层架构把不同层的业务职责分离得更加彻底,逻辑层不包含一丁点的视图层代码,同样的数据层也不应该包含一丁点的逻辑层代码,因为如果包含了其他层的代码就不能做到完全解耦,依旧存在一定程度的耦合性。

三层架构更好的实现了模块化编程,使用三层架构设计的系统更容易扩展、更换,特别是如今不止pc端一种设备,如果没做好分层就无法适应多设备的访问。例如表示层我们使用jsp+Servlet做的,面向的是web,如果哪天不做web了,要把整个表示层更换成桌面的图形化来显示,那么使用了三层架构的话,只需要更换表示层即可,逻辑层和数据层都可以进行复用。如果没有进行分层的话,各个模块都耦合在一起就无法进行复用,只能重新再编写一个适应桌面的系统出来,这样就很耗时耗力了。

我们都知道WebService是一种跨编程语言和跨操作系统平台的远程调用技术,如果一个系统是使用三层架构进行设计的,那么逻辑层就可以通过WebService共享给其他不同语言编写的应用程序调用。

最近流行的微信小程序是通过https访问服务器的,它需要服务器返回json数据,那么我们就可以在视图层中的Servlet接收这个访问,处理完成后返回json数据。

三层开发模式的优缺点

优点:

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

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

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

4、有利于标准化;

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

6、结构更加的明确

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

缺点:

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

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

比如,一家饭店添加了一样菜, 那个菜单(UI) , 厨师(BLL) , 采购(DAL) 都要进行相应的处理。

标签:逻辑,架构,表示层,访问,MVC,三层
From: https://www.cnblogs.com/amor2818/p/17110241.html

相关文章

  • EasyCVR视频云存储的架构解析与Sharelist云存挂载方法介绍
    一、什么是视频云存储?视频云存储主要用于为上层应用提供视频文件、结构化信息、事件信息的相关服务。云存储节点分为数据文件存储节点和结构化数据存储节点。数据文件存储节......
  • EasyCVR视频云存储的架构解析与Sharelist云存挂载方法介绍
    一、什么是视频云存储?视频云存储主要用于为上层应用提供视频文件、结构化信息、事件信息的相关服务。云存储节点分为数据文件存储节点和结构化数据存储节点。数据文件存储......
  • 浅析 SeaweedFS 与 JuiceFS 架构异同
    SeaweedFS是一款高效的分布式文件存储系统,最早的设计原型参考了Facebook的Haystack,具有快速读写小数据块的能力。本文将通过对比SeaweedFS与JuiceFS在设计与功能上......
  • 【转】分布式架构概述及设计
     转,原文: https://blog.csdn.net/l6108003/article/details/94835586----------------------------------------引言随着越来越多的人参与到互联网的浪潮来,曾经的单体......
  • ELK企业级系统日志架构
    企业级日志系统架构——ELK(Elasticsearch、Filebeat、Kafka、Logstash、Kibana)原创 liugp 大数据与云原生技术分享 2023-01-2707:30 发表于江西收录于合集#ELK......
  • Apache Hudi 设计与架构解读
    1.简介ApacheHudi(简称:Hudi)允许您在现有的hadoop兼容存储之上存储大量数据,同时提供两种原语,使得除了经典的批处理之外,还可以在数据湖上进行流处理。这两种原语分别是:......
  • CFS三层靶机-内网环境渗透
    <1>靶场介绍及环境配置三个主机的网络环境拓扑图,攻击机的网段在192.168.236.0/24,三台靶机的IP地址分别如图:上面的Target1、2、3分别对应CentOS7、Ubuntu、Windows7三......
  • 1.大并发服务器架构Part1
    要提升服务器性能,就要有服务器高性能编程技术,就需要自己编码实现。另外服务器性能的几个性能杀手:1数据拷贝,数据从内核态copy到用户态,或者在用户态之间co......
  • 2.大并发服务器架构Part2
    ......
  • 关于技术能力的思考和总结-架构设计(二)
    目录技术架构思考方法0--->11--->01--->21--->N-1<--->1M*N--->M+N总结这篇文章我其实更想跟大家聊聊一些常用的思考方法,思考问题的方式对了,往往可以帮助大家少走弯路。......