层次结构及对象的定义|学习笔记

简介: 快速学习层次结构及对象的定义

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术层次结构及对象的定义学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15920


层次结构及对象的定义


内容简介:

一、四个层次机构体系

二、model包

 

一、四个层次机构体系

1. 第一层是控制器层controller

controller 的职责主要是负责接收前端的数据,把这些数据传给后端然后处理要返回给前端的数据封装要返回给前端的数据,以及处理一些错误码,异常的处

2. 第二层是service层

service 层主要的职责是用来去写业务代码因为业务代码是比较单薄这个例子主要是对于商品和规格对象的增删改查,所以可以看到,在例子中间 service层的代码

是非常少基本上没有。

3. 第三层称之dao层。

用来访问数据的,访问数据的定义是它要从数据库里去拿到数据,然后把数据封装成为我们想要的对象的样子。所以dao层中间因为现在的业务主要就是数据的增删改查,所以例中间大量的代码是在dao

4. 最后一层是mopper层。

mopper 层的主要的作用是用来实现对象模型和关系数据库的转换主要是一个

mopper 接口。

以上是整个程序的四层的体系结构,它是一个严谨的分层结构service 层只能调用dao dao 层只能调用mopper 层,不能实现跨层的调用

 

二、model包

除了四个包以外还有一个包叫做 model。model 包里包含了三类的对象

第一个对象是 vo对象vo 对象是用在 controller层的。controller 层的作用主要是两个第一是接收从前端过来的数据。这一类的 vo 里是有带合法性检查,因为它要对前端接外的数据进行合法性检查。前端过来的数据在数据库里存的数据以及在在系统中间的对象模型是不一样的。所以接收从前端传数据的这种 vo 是完全按照前端所需要传的数据的格式来定义的,跟对象模型和数据库的存储是没有关系

的。

第二类的 vo 在命名上加了一个 retvo。在例中间有两个一是固值的 retvo,一个是 product vo。这两个 vo的作用是用来去封装返回给前端的数据。所以是没有合法性检查的只封装了需要返回给前端的数据前端想要什么样的数据或者在api中间定义的是给前端什么样的数据就用这样的一个 vo去封装是在 model层中间的第一类对象两个 vo分别用来接收从前端传过来的数据以及返回给前端数据。

第二类对象称之为业务对象,有人把它称之为 business bo。没有去给它做特别的名字,后面没有后缀的啊,这一类的对象称之为业务对象业务对象实际上是构成对象模型的重要的组成部分换言之对象模型其实就是业务对象来构成的,是要把对象模型组件组装出来然后去执行去实现业务逻辑

第三类对象是 po。po 的作用是用来去对数据库进行访问。po基本上跟数据库里的表是一一对应的。所以每一张数据库值的表就会有一个对应的 po。数据库里的字段

就是 po的属性。所以 po 的对象并不能体现出它的面向对象的模型出来。dao 层的重要的作作用就是。从 po中间去构建出 bo对象业务对象,然后让 service层在这些业务对象实现它的业务逻辑

除了 model的包以外还有一个包叫做 util。util 包里是一些通用的工具啊,包里的代码很多都是用静态方法来实现的,所以它不是用面向工程面向对象的思想来

实现的。所以上所有的代码中都有可能用到了 util的代码。

vo、bo、po 三者之间的关系。代码中 vo有两种,一种是用来传对象的,一种是用来返回值的。所以传对象的那一类的vo里都有一个方法,它可以用来去创建对应的bo的对象为了节省内存空间,可以把 po对象放到 bo对象里。bo 对象其实并不是真正存在的一个对象,虽然它是一个类,但是可以看到所有的 bo对象里都放了一

po的对象

实际上是把 po对象 用bo的方式给展现出来,这里是我们称之为装饰器的设计模式也有人把它称之为代理设计模式无论哪种名字啊,它的作用就是它的里其实是一个 po,但是它展现出来的是一个 bo。所以它把 po中间不需要的一些属性以及在 po中间没有的一些属性在 bo上把它实现出来

对于每一个 bo来说,因为它最后是要返回值返回给前端,所以 bo的是可以产生一个带 vo的一个对象。所以所有的 bo对象都实现了一个接口叫做 vovo 中间定义的方法就可以从中间创建出来一个需要返回给前端的的一个对象

相关文章
|
存储
ENVI:(2022年最详细的教程)自定义坐标系
ENVI:(2022年最详细的教程)自定义坐标系
1085 0
|
存储 前端开发 测试技术
DDD - 六边形架构和CQRS架构
DDD - 六边形架构和CQRS架构
1342 0
|
机器学习/深度学习 算法 安全
密码学系列之六:公钥密码体制
密码学系列之六:公钥密码体制
|
C++
2019 第十届蓝桥杯大赛软件赛决赛,国赛,C/C++大学B组题解
2019 第十届蓝桥杯大赛软件赛决赛,国赛,C/C++大学B组题解
481 0
|
7月前
|
人工智能 IDE 定位技术
AI IDE正式上线!通义灵码开箱即用
作为AI原生的开发环境工具,通义灵码AI IDE深度适配了最新的千问3大模型,并全面集成通义灵码插件能力,具备编程智能体、行间建议预测、行间会话等功能。
955 13
|
Java
探索Java新境界!异步+事件驱动,打造响应式编程热潮,未来已来!
【8月更文挑战第30天】在现代软件开发中,系统响应性和可扩展性至关重要。Java作为主流编程语言,提供了多种机制如Future、CompletableFuture及事件驱动编程,有效提升应用性能。本文探讨Java异步编程模型与事件驱动编程,并介绍响应式模式,助您构建高效、灵活的应用程序。
186 3
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
8431 108
|
Linux
【Linux命令200例】diff比较两个文件的差异
diff命令是Linux系统中的一个非常实用且常用的命令。它用于比较两个文件的差异,并输出不同之处的详细说明。diff命令可以帮助我们快速找出两个文件之间的差异,从而方便我们进行文件对比、合并和版本控制等操作。
1390 0
|
存储 SQL NoSQL
数据库技术全攻略:原理、应用与未来展望
一、引言 在数字化时代,数据是企业决策的关键
|
JSON Java Apache
SpringCloud - Feign 调用服务及传递参数踩坑记录(上)
SpringCloud - Feign 调用服务及传递参数踩坑记录(上)
3279 0