设计模式报告.docx

上传人:b****2 文档编号:394776 上传时间:2022-10-09 格式:DOCX 页数:23 大小:1.88MB
下载 相关 举报
设计模式报告.docx_第1页
第1页 / 共23页
设计模式报告.docx_第2页
第2页 / 共23页
设计模式报告.docx_第3页
第3页 / 共23页
设计模式报告.docx_第4页
第4页 / 共23页
设计模式报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

设计模式报告.docx

《设计模式报告.docx》由会员分享,可在线阅读,更多相关《设计模式报告.docx(23页珍藏版)》请在冰豆网上搜索。

设计模式报告.docx

课程设计说明书

课程名称设计模式课程设计

设计题目设计模式在FileUpload组件中的应用

班号专业软件工程

学生姓名######

指导教师(签字)

目录

第一章设计模式概述

1.1模式与设计模式

1.2设计模式的定义

1.3设计模式的基本要素

1.4设计模式的分类

第二章FileUpload组件简介

2.1FileUpload组件由来及使用

2.2FileUpload组件的工作原理

2.3FileUpload组件中的部分接口、类简介

第三章设计模式在FileUpload组件中的应用

3.1工厂方法模式在FileUpload组件中的应用

3.2策略模式在FileUpload组建中的应用

3.3迭代器模式在FileUpload组建中的应用

3.4FileUpload组件中的重要类图

第四章结束语

4.1收获与总结

4.2参考文献

第一章设计模式概述

1.1模式与设计模式

模式起源于建筑业而非软件业,模式(Pattern)之父—美国加利佛尼亚大学环境结构中心研究所所长ChristopherAlexander博士。

Alexander给出了关于模式的经典定义:

每个模式都描述了我们环境中不断出现的问题,然后描述了解决这个问题解决方案的核心,通过这种方式,我们可以无数次的重用那些已有的解决方案,无需再重复相同的工作,也可以用一句话概括为:

模式是在特定环境中解决问题的一种方案。

最早将Alexander博士的模式思想引入软件工程方法学的是以四人组(GangofFour,GoF)自称的四位著名软件工程学者,他们在1949归纳发表的23中在软件开发中使用频率较高的设计模式,旨在用模式来统一沟通面向对象方法学在分析、设计和实现间的鸿沟。

GoF将模式的概念引入软件工程领域,标志着软件模式的诞生,软件模式是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思想或参照样板软件模式并非仅限于设计模式,还包括架构模式、分析模式、和过程模式等。

从1987年KentBeck和WardCunningham借鉴Alexander的模式思想在程序开发中开始应用一些模式到目前设计模式在软件开发的广泛应用,Sun公司的JavaSE/JavaEE平台和Microsoft公司的.net平台设计中就应用了大量的设计模式。

再设计模式领域,下一的设计模式是指GoF的《设计模式:

可复用面向对象软件的基础》一书中包含的23中经典设计模式,不过设计模式并不仅仅只有这23中,随着软件开发技术的发展,越来越多的模式不断诞生并得以广泛应用。

1.2设计模式的定义

设计模式(DesignPattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性。

1.3设计模式的基本要素

1.3.1模式名称(Patternname)

模式名称通过一两个词来描述模式的问题、解决方案和效果,以便更好地理解模式并方便开发人员之间的交流,绝大多数模式都是根据其功能或模式结构来命名的。

1.3.2问题(Problem)

问题描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因。

这些问题有些是一些特定的设计问题,如怎样使用对象封装状态或者使用对象表示算法等,也可能是系统中存在不灵活的类或对象结构,导致系统可维护性较差。

1.3.3解决方案(Solution)

解决方案描述了设计模式的组成成分,以及这些组成成分之间的相互关系,各自的职责和协作方式。

模式是一个通用的模板,它们可以应用于各种不同的场合,解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。

1.3.4效果(Consequences)

效果描述了模式应用的效果以及在使用模式时应权衡的问题。

效果主要包含模式的优缺点分析,我们应该知道,没有任何一个解决方案是百分之百完美的,在使用设计模式时需要进行合理的评价和选择。

1.4设计模式的分类

根据设计模式的目的(模式是用来做什么的)可分为创建型(creational)、结构型(structural)和行为型(behavioral)三种。

以下是GoF的23中经典模式的分类。

第二章FileUpload组件简介

2.1.FileUpload组件由来及使用

FileUpload是Apachecommons下面的一个子项目,用来实现Java环境下面的文件上传功能,与常见的Smartypants齐名。

需要注意的是FileUpload组件在使用时依赖于CommonsIO组件,因此在继续之前,要确保在你的工程classpath中有描述页中提到的相应版本,本次课程实际使用的FileUpload版本为:

commons-fileupload-1.3.1,CommonsIO版本为:

commons-io-1.4。

2.2.FileUpload组件的工作原理

上传的文件要求包括一个根据RFC1867(在HTML中基于表单的文件)编码的选项列表清单。

组件FileUpload可以解析这个请求,并给你的应用程序提供一份独立上传的项目清单。

无论每个项目背后如何执行都实现了FileItem接口。

这里将描述组件FileUpload库的普通API,这些API比较简单。

不过,对于最终的实现,你可以参考最新的API流。

每一个文件项目都有一些属性,这些可能在你的应用程序中应用到。

比如:

每一个项目有一个名称name和内容类型contenttype,并提供了一个InputStream访问其数据。

另一方面,你处理项目的方法可能有所不同,这个依赖于是否这个项目是一个规则的表单域,即:

这个数据是来自普通的表单文本,还是普通的HTML域或是一个上传文件。

在FileItem接口中提供了处理这些问题的方法,可以更加方便的去访问这些数据。

组件FileUpload使用FileItemFactory工厂创建新的文件项目。

这个给了组件FileUpload很大的灵活性。

这个工厂拥有怎样创建项目的最终控制权。

工厂执行过程中上传项目文件的临时数据可以存储在内存中或硬盘上。

这个依赖于上传项目的大小(即:

数据的字节)。

不过这种行为可以在你的应用程序中适当的自定制。

2.3FileUpload组件中部分接口、类简介

2.3.1FileItem接口

mons.fileupload.disk.DiskFileItem实现了FileItem接口,用来封装单个表单字段元素的数据。

通过调用FileItem定义的方法可以获得相关表单字段元素的数据。

2.3.2FileUpload类

FileUpload类的继承结构:

java.lang.Object

mons.fileupload.FileUploadBase

mons.fileupload.FileUpload

2.3.3DiskFileItemFactory

此类将请求消息实体中的每一个项目封装成单独的DiskFileItem(FileItem接口的实现)对象的任务由mons.fileupload.FileItemFactory接口的默认实现mons.fileupload.disk.DiskFileItemFactory来完成。

当上传的文件项目比较小时,直接保存在内存中(速度比较快),比较大时,以临时文件的形式,保存在磁盘临时文件夹(虽然速度慢些,但是内存资源是有限的)。

2.3.4ServletFileUpload类

mons.fileupload.servlet.ServletFileUpload类是Apache文件上传组件处理文件上传的核心高级类(所谓高级就是不需要管底层实现,暴露给用户的简单易用的接口)。

使用其parseRequest(HttpServletRequest)方法可以将通过表单中每一个HTML标签提交的数据封装成一个FileItem对象,然后以List列表的形式返回。

第三章设计模式在FileUpload组件中的应用

3.1工厂方法模式在FileUpload组件中的应用

3.1.1工厂方法模式定义

工厂方法模式(FactoryMethodPattern)定义:

工厂方法模式又称为工厂模式,也叫虚拟构造器(VirtualConstructor)模式或者多态工厂(PolymorphicFactory)模式,它属于类创建型模式。

在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

3.1.2工厂方法模式结构

1.Product(抽象产品)

抽象产品是定义产品的接口,是工厂方法模式所创建对象的超类型,也就是产品对象的共同父类或接口。

2.ConcreteProduct(具体产品)

具体产品实现了抽象产品接口,某种类型的具体产一一对应。

3.Factory(抽象工厂)

在抽象工厂类中,声明了工厂方法(FactoryMethod)厂方法模式的核心,它与应用程序无关。

任何在模式中创建对象的工厂类都必须实现该接口。

4.ConcreteFactory(具体工厂)

具体工厂是抽象工厂类的子类,实现了抽象工厂中返回一个具体产品类的实例。

在具体工厂类中包含与应用程序调用以创建产品对象。

3.1.3模式分析

工厂方法模式是简单工厂模式的进一步抽象和推广。

工厂方法模式保持了简单工厂模式的优点,而且克服了的工厂类不再负责所有产品的创建,而是将具体创建工负责给出具体工厂必须实现的接口,而不负责哪一个产方法模式可以允许系统在不修改工厂角色的情况下引进类与产品类往往具有平行的等级结构,它们之间一一对应。

通过分析,该组件中应用了工厂方法模式的类如下:

FileItemFactory类(抽象工厂):

是工厂方法的核心,它与应用程序无关。

包含了抽象的工厂方法:

FileItemcreateItem(

StringfieldName,

StringcontentType,

booleanisFormField,

StringfileName

);

返回一个抽象产品FileItem对象。

DiskFileItemFactory类(具体工厂):

实现了抽象工厂方法FileItemcreateItem(),在工厂方法中创建并返回一个对象的具体产品。

publicFileItemcreateItem(StringfieldName,StringcontentType,

booleanisFor

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1