开发模型

系统开发模型:

即,系统架构,是指整合应用系统程序大的结构。经常提到的系统结构有两种:三层架构 和 MVC。

  这两种架构,既有区别,又有联系。但是这两种结构的使用,均是为了降低系统模块间的耦合度。 (便于开发时的分组)

  

  传统的JavaWeb 项目的系统开发模型大体经历了四个阶段:

        纯JSP ---> JSP+JavaBean 的Model1 --->MVC的Model2   ---> MVC+三层架构



1. 纯JSP

    

  “纯 JSP”开发模型中,将所有的业务处理、数据显示功能都交由JSP页面完成。

  其缺点很明显:

    JSP页面中的代码结构很乱,显示功能 与业务处理功能代码没有划分,维护 与 升级相当麻烦。



2.JSP+JavaBean 的Model1

    

  

  这种开发模型将绝大多数 业务处理功能,交给了 专门的JavaBean 来完成,而JSP页面不再进行业务处理,主要来完成数据显示功能。(实现了业务逻辑 和 页面显示的分离)

  这种开发模型,较 "纯JSP页面"的开发模型,有了很大的改进。但是该开发模式对于来自客户端的请求的解析,以及对于JavaBean对象的选择与创建,仍然是由JSP页面通过Java代码块来完成的。

  也就是说,JSP页面还是承担了很大的请求解析、业务处理功能。

牵引出一个知识点: JavaBean

  JavaBean 根据其具体概念的不同,可以分为两大类: 广义的JavaBean 与 狭义的JavaBean。

  

  所谓广义的JavaBean,就是指 一般意义上的Java类。

  其主要功能是: 承载数据 与 业务处理。

  因此:广义的JavaBean 又分为两类:数据承载Bean 和 业务 处理Bean。

    数据承载Bean就是指 实体类,专门用于承载业务数据的。如 Student、User等。

        如,创建了一个Student类。这个类的对象存放在堆区内存中。而在堆区内存中存放的Student对象,实际上是存放了创建student的name、age..的值。这个类与存放数据,装数据。

        因此,叫做承载数据Bean、。

    而业务处理Bean则指的是 Service 或Dao对象,专门用于处理用户提交请求的。

        如,JDBC。要想访问数据库,需要定义一个类。类中需要声明成员变量 和 方法。这些方法,用于实现 增删改查的功能。

        因为定义这个类的对象的作用就是为了 访问数据库,对数据库进行增删改查。

     所以,叫做 业务处理Bean。

  狭义的JavaBean,是指符合sun公司提出的"JavaBean规范"的Java类。

  JavaBean规范规定,满足以下四点的Java类,称为 JavaBean

      -该类需要是公共类,即public class...

      -该类需要实现Serializable接口。

      -该类需要具备无参构造器,无论是默认的,还是显示定义的。

      -该类若有成员变量,则这些成员变量必须是私有的,且需要提供这些私有成员变量的公共getter 与 setter。

   在实际项目中,实体类一般会被定义为狭义的JavaBean。

   即,广义的JavaBean的数据承载Bean一般会被定义为满足"JavaBean规范"的狭义JavaBean。



3. MVC的Model2

  

  MVC, 即 Model模型 、 View视图、以及 Controller控制器

  -View:视图,为用户提供使用界面,与用户进行直接的交互;

  -Model:模型,承载数据,并对用户提交请求进行计算的模块。

       其分为两类: 数据承载Bean  和 业务处理Bean

       所谓数据承载Bean就是指 实体类,专门用于承载业务数据的。如 Student、User等。

              而业务处理Bean则指的是 Service 或Dao对象,专门用于处理用户提交请求的。

  -Controller:控制器,用于将用户请求转发给相应的Model进行处理,并根据Model的计算结果向用户提供相应响应。

        所有的请求和响应,通通要经过控制器。

  注意: JSP其实也可以直接访问 数据承载Bean。

     但是,要杜绝JSP直接访问 业务处理Bean。

  MVC架构程序的工作流程是这样的:



4. 三层架构

  

  三层架构 是指:视图层 View 、服务层 Service 、持久层 Dao。 它们分别完成不同的功能。

  View层:表现层、视图层,对于Web开发,也称为Web层。用于接收用户提交请求的代码在这里编写。

  Service层: 业务层、逻辑层,系统的业务逻辑主要在这里完成。

  Dao层: 持久层、数据访问层,直接操作数据库的代码在这里编写。 DAO ,即Data Access Object,数据访问对象。

  

  为了更好的降低各层间的耦合度,在三层架构程序设计中,采用了面向抽象编程。

  即上层对下层的调用,是通过接口实现的。

  而下层对上层的真正服务提供者,是下层接口的实现类。

  它们服务标准(接口)是相同的,服务者提供(实现类)可以更换。这就实现了层间解耦合。



5. MVC+三层架构

  

  

  所谓 “MVC+三层架构”的开发模型,主要是指 将MVC的业务处理Model分为了两层:

    Service层 与 Dao层,分别用于处理 业务逻辑 和 持久化操作。

    “MVC+三层架构”的开发模型,是最传统的JavaWeb项目的最常用开发模型。

  



开发模型

原文地址:https://www.cnblogs.com/penguin1024/p/12174064.html

时间: 2024-10-25 17:55:33

开发模型的相关文章

几大开发模型区别与联系

开发模型分别有瀑布模型,快速原型模型,增量模型,螺旋模型.  瀑布模型,是一种分工很细,力求每个环节都做到最好,前一个环节没做完不进入下一阶段的一种开发模型.就好比建房子,从设计图开始,确定后打地基,砌外墙,然后是里面每个小房间的建设.可是,瀑布模型有一个不好的地方,就是一旦前面的环节出错了,后面环节发现后得从该环节修改开始.这就增大了每个环节的严谨性.就好像设计图错了,建到一半的大楼就得停工或者是重做.  快速原型模型,是一种用建立原型的方法来明确软件需求的开发模型.在一些设计上,可能客户也不

个开发模型的比较

各种模型的比较 每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点,下表列出了几种常见模型的优缺点. 模型 优点 缺点 瀑布模型 文档驱动 系统可能不满足客户的需求 快速原型模型 关注满足客户需求 可能导致系统设计差.效率低,难于维护 增量模型 开发早期反馈及时,易于维护 需要开放式体系结构,可能会设计差.效率低 螺旋模型 风险驱动 风险分析人员需要有经验且经过充分训练

软件工程 -- 开发模型

软件工程 -- 开发模型 目录 瀑布模式螺旋模型快速原型模式增量模式喷泉模型演化模型 瀑布模式 特点: 阶段间具有顺序性和依赖性: 前一阶段完成后,才能开始后一阶段 前一阶段的输出文本为后一阶段的输入文本 推迟实现的观点 质量保证: 每个阶段必须交付出合格的文档 对文档进行审核 缺点: 开始需要把需求做到最全 惧怕用户测试中的反馈,惧怕需求变更 mux 螺旋模型 限制条件: 适应于内部的大规模软件开发:螺旋模型强调风险分析,许多客户都无法接受和相信这种分析因此 适合于大规模软件项目(执行风险分析

对公司开发模型的思考

0x00 前言 工作了三年多,经历了公司的开发模型从摸着石头过河到现在走入弯路的转变,写篇文章总结一下这些思路,其中不少值得我们警惕. 0x01 成立之初的开发模型 - 没有模型 团队组成:一个项目经理和三个开发人员,项目经理有时写要代码. 团队协作方式:此阶段我们每个人都是全栈的,除了项目管理的工作由经理安排外,剩下所有事情(从PS到需求讨论.设计再到开发测试和最后结果)都是我们4个人一起完成. 分析 说明:我用"各阶段对需求的理解程度与最初的期望值的符合度"来衡量一下我们团队的工作

软件生命周期以及开发模型

一.软件生命周期: 可行性研究,需求分析(这两步是软件定义) 概要设计.详细设计.实现.集成测试.确认测试:属于软件开发 使用与维护.退役:维护. 二.软件开发模型: 1.以软件需求可完全确定为前提的瀑布模型 2.在软件开发初期只能提供基本需求所采用的渐进式开发模型如:原型模型.螺旋模型. 3.以形式化开发方法为基础的变换模型. 三.瀑布模型 1.主要思想:a.软件开发过程与软件生命周期一致 b.相邻二阶段之间存在因果关系 c.需对阶段性产品进行评审. 2.不足:a.缺乏灵活性 b.到最后阶段才

几种网站开发模型- Model1、Model2、三层

以目前自己的理解,所接触到的面向对象思想中最重要的是"抽象",软件设计目标中最重要的是"可以应对需求的变化(增加或更改)". 思考一下,无论是"分层"思想,还是"设计模式"思想,还是"泛型"思想等,应该可以说最终的目的都是为了"可以应对需求的变化",且都充盈着"抽象". 分层是为了使得"大变小.繁变易",而针对不同的现实情况,它可以演化出千变万化的

FFmpeg SDK开发模型之三:muxer

简介 使用FFmpeg SDK实现的H.264码流合成MPEG2-TS文件 一.源代码 int main(int argc, char* argv[]) { const char* input = NULL; const char* output= NULL; /* Obtain input params */ if (argc <= 1) { printf("Usage:\n"); printf("%s <input_file.264> <outpu

1.几大开发模型区别与联系

五大开发模型:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型 采用瀑布模型或快速原型模型开发软件时,目标都是一次就把一个满足所有需求的产品提交给 用户.而增量模型与他们相反,它分批逐步地向用户提交产品,整个软件产品被分解成许多个 增量构件,开发人员一个构件接一个构件地向用户提交产品.螺旋模型可以看做在每个阶段之 前都增加了风险分析过程的快速原型模型.喷泉模型是体现了面向对象软件开发过程迭代和无 缝的特性.为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如快 速原型模式)

Ejb—开发模型与实例

1.    开发模型 这里用最简洁的一个Ejb项目模型来简介Ejb的开发过程与调用原理.粗略的开发过程如下: ?  首先,新建Ejb项目,并部署到JBoss服务器(作为服务端). ?  然后,新建普通Java项目作为客户端.(客户端的概念是相对的,它可以是任何类型的项目,包括可以是另一个Ejb项目) ?  最后,将Ejb项目中的接口打包为jar包,并添加到客户端,客户端即可以通过InitialContext来查找到Ejb,并调用Ejb的方法. 如下图所示: 2.    实例源码如下 服务端 新建

FFmpeg SDK开发模型之一:解码器

简介 本例讲解了如何使用ffmpeg SDK解码媒体文件: 参考源码是ffmpeg 自带的apiexample.c 一.源代码 #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #ifdef HAVE_AV_CONFIG_H #undef HAVE_AV_CONFIG_H #endif #include "libavcodec/avcodec.h