开发者学堂课程【高校精品课-厦门大学 -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对象都实现了一个接口叫做 vo。vo 中间定义的方法就可以从中间创建出来一个需要返回给前端的的一个对象。