MVC框架里的几种对象

news2024/11/25 14:34:05

        Java语言是一门面向对象的编程语言,所有都用类表达,入口都是一个类,没有独立的main()函数,类的实例化就是对象。

        简单来讲类包括数据和方法,方法就是操作,是实现业务逻辑的地方,常常是需要写大块代码的,时时被提醒不要写太多代码。

        有一种类,我们主要是定义数据结构的,数据字段都是private类型的,方法仅限getXXX()和setXXX()来存取数据,不写任何业务逻辑,这种类常常叫它JavaBean, 有时也叫它POJO, 简单Java对象。等等,怎么一个类叫XXX对象?我也没有去考古,反正大家都这么叫,还有如下几个更常见常用的:

        VO: 视图对象View Object/值对象value object。

        BO: 业务对象Business Object。

        PO: 持久层对象Persistant Object。

        DTO: 数据传输对象Data Transfer Object。

        上图是在MVC框架里这集中对象所处的位置,当然这仅仅是我自己喜欢用的方式,并不是什么标准,也没考究什么是标准。

        MVC框架主要是从技术角度去分层的,controller和service这两层一般都这么命名和设计,而持久化层早期用dao居多,现在用repository来命名,叫什么包名不是太重要,主要是分层清晰,结构清晰严密。当然也不能取一个乖乖的名字,大家都不明白是什么,不利于可读性。

        如果是从包的定义来讲,上图表达是不对的,我只是强调VO和DTO主要在controller层使用,BO在service层使用,PO在repository使用。是主要,但常常传参界限是模糊的,不用纠结,主要在于它的作用和目的。

        所以我们在实际项目里,可以看到包名:controller, service, repositoy, vo, bo, dto, po, bean, pojo, entity等。我们集中在这些包里定义同一类型的类,不管这个系统里有多少业务流程。

        定义的地方我们一般不会错,但是使用,至少我们不能在controller里大量使用PO吧,直接把表数据不加过滤的全部返回给前端系统,我们之所以不怕麻烦的定义这么多类,目的是什么,为什么,这是开发人员要去思考的,而不是简单的模仿。

        

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1545617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应急响应靶机-Linux(2)

前言 应急响应靶机训练,为保证每位安服仔都有上手的机会,不做理论学家,增加动手经验,可前来挑战应急响应靶机-Linux(2),此系列后期会长期更新,关注本公众号,被动学习。 挑战内容 前景需要:看…

16:00面试,16:06就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

生物信息—数据库

文章目录 核酸数据库1 一级核酸数据库:GenBank1.1 原核生物核酸序列1.2 真核生物成熟mRNA1.3 真核生物DNA序列 2 一级核酸数据库:基因组数据库:Ensemble3 一级核酸数据库:微生物宏基因组数据库:JCVI4 二级核酸数据库 蛋…

(2022级)成都工业学院Java程序设计(JAVA)实验二:类和对象

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、代码仅提供参考 3、如果代码不满足你的要求,请寻求其他的途径 运行环境 window11家庭版 IntelliJ IDEA 2023.2.2 jdk17.0.6 实验要求 1、 控制台菜单。在 Exp02_x 类中添加一个方法 menu_x&…

Flutter开发进阶之瞧瞧BuildOwner

Flutter开发进阶之瞧瞧BuildOwner 上回说到关于Element Tree的构建还缺最后一块拼图,build的重要过程中会调用_element!.markNeedsBuild();,而markNeedsBuild会调用owner!.scheduleBuildFor(this);。 在Flutter框架中,BuildOwner负责管理构建…

Java基础--128陷阱

问题引入 Integer a 123; Integer b 123; System.out.println(ab); 结果为true。 但是如果代码如下 Integer a 1230;Integer b 1230;System.out.println(ab); 这个的结果就是false。 问题解决 当Integer a 123时,其实他底层自动转换成了Integer a Inte…

数据库专题(oracle基础和进阶)

前言 本专题主要记录自己最近学的数据库,有兴趣一起补习的可以一起看看,有补充和不足之处请多多指出。希望专题可以给自己还有读者带去一点点提高。 数据库基本概念 本模块有参考:数据库基本概念-CSDN博客 数据库管理系统是一个由互相关联的…

Arduino+ESP8266+华为云物联网平台实现智能开关

前言 最近在做一个物联网项目,涉及到智能开关的开发。目前已经实现简单的TCP通信远程控制,但是考虑到后期的设备管理以及设备通信所需要的技术和服务器的维护成本,我决定将设备接入云平台。本文将详细阐述如何利用华为云的物联网平台&#x…

Linux系统下安装部署Linux管理面板1panel

目录 一 1panel介绍 1、1Panel简介 2、1Panel特点 二、本地环境规划 1、本此实验目的 2、本地环境部署 三、部署1Panel(在线安装) 1.创建安装目录 2.一键部署1Panel 3.检查1Panel服务运行状态 4.检查1Panel监听端口 四、关闭防火墙和selinux…

小动物主动跑轮和被动跑轮的功能和目的?

小动物主动跑轮和被动跑轮在运动方式、实验目的和设计构造方面上是有区别的。 运动方式不同。主动跑轮是由动物自主运动来推动跑轮转动的。这种设置可以真实地反映动物自发的运动情况。相对地,被动跑轮则是一种强迫运动的方式,通常由电机带动跑轮转动从…

视频生成Sora的全面解析:从AI绘画、ViT到ViViT、TECO、DiT、VDT、NaViT等

前言 真没想到,距离视频生成上一轮的集中爆发(详见《Sora之前的视频生成发展史:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0》)才过去三个月,没想OpenAI一出手,该领域又直接变天了 自打2.16日OpenAI发布sora以来(其开发团队包…

基于yolov8安全帽检测的系统

基于yolov8安全帽检测的系统 项目描述: 安全头盔检测(计算机视觉) 1.自训练数据集1538张数据图片,进行标注,并进行100轮的训练,准确率达0.966 2.使用 Flask 和 Ultralytics YOLOv8 模型开发了一个 Web 应…

Matlab有限差分法求解狄利克雷(Dirichlet)边界的泊松(Poisson)问题,边界值为任意值

参考l链接: 有限差分法简介有限差分法-二维泊松方程及其Matlab程序实现弹性力学方程 有限差分法matlab,泊松方程的有限差分法的MATLAB实现 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Matrix method for Poisson Equation …

景联文科技上新高质量大模型训练数据!

在过去的一年中,人工智能领域呈现出了风起云涌的态势,其中模型架构、训练数据、多模态技术、超长上下文处理以及智能体发展等方面均取得了突飞猛进的发展。 在3月24日举办的2024全球开发者先锋大会的大模型前沿论坛上,上海人工智能实验室的领…

[Linux]知识整理(持续更新)

前言 Linux的目录结构 Linux的目录结构是一个树型结构 Windows 系统可以拥有多个盘符, 如 C盘、D盘、E盘 Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面 Linux路径的描述方式 第一章 基本命令 命令格式 例:ls –la /etc 说明: 1)个别命令使用不遵循…

照片尺寸怎么修改?高效快速处理方法

在分享照片到不同平台时,也需要符合不同尺寸要求,在不同场景中,应该如何修改图片尺寸呢?还有不同的证件类型有着不同的证件照尺寸要求,因此我们需要根据要求对证件照尺寸进行调整,接下来就介绍几个可以图片…

35.基于SpringBoot + Vue实现的前后端分离-在线考试系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的在线考试系统设计与实现管理工作系统…

Netty学习——源码篇6 Pipeline设计原理 备份

1 Pipeline设计原理 在Netty中每个Channel都有且仅有一个ChannelPipeline与之对应,它们的组成关系如下图: 通过上图可以看到,一个Channel包含了一个ChannelPipeline,而ChannelPipeline中又维护了一个由ChannelHandlerContext组成的…

HTTP工具类封装与http请求响应

一、前言 在Java web系统中经常需要与外部接口进行对接,比较多的方式就是是http的方式。在springboot中,我们可以直接使用封装的feign如:我们去请求微信的接口,定义一个client客户端,使用feign框架去请求就可以。但是…

全志A33编译踩坑!

领导给了个新sdk。然后开编。 编译的标准流程是这样 cd lichee ./build.sh config 这还得了,每次都选很烦(虽然只需要选一次),于是新写法是这样 ./build.sh -p sun8iw5p1_android -k linux-3.4 -b evb 果断提示 ERROR: inv…