软件构件与中间件大作业.doc_第1页
软件构件与中间件大作业.doc_第2页
软件构件与中间件大作业.doc_第3页
软件构件与中间件大作业.doc_第4页
软件构件与中间件大作业.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件构件与中间件大作业项目开发人高旭开发人班级2007 开发人学号2007082304开发人专业软件工程项目名称网上商店系统成绩 修 改 履 历修改编号日期修改人版本号修改内容12010-5-10孙世昶10确定大作业的设计方法与书写格式2目 录1 文档概述41.1 文档目的和范围41.2 术语/缩略语41.3 参考文档42 系统概述42.1 项目说明42.2 需求分析52.3 可行性或难点分析73 设计模式概述73.1 观察者模式73.2 适配器模式83.3 生成器模式94 系统设计说明104.1 模块整体结构图104.2 使用说明书115 系统中的设计模式125.1 分析模式的作用125.2 设计一种需求的变化125.3 系统的扩展125.4 模式图125.5 类(接口)126 结论146.1 自我评价或总结146.2 需要进一步学习的内容156.3 系统扩展计划151 文档概述1.1 文档目的和范围 读者通过使用本文档可以对本项目有一个大概的了解以及如何使用此程序。1.2 术语/缩略语序号术语/缩略语说明1需求分析确定要计算机“做什么” 2设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结1.3 参考文档序号文档名作者时间版本1Java设计模式之Observer新书城2006-12-231.022 系统概述2.1 项目说明 本项目为网上购物系统,用户可以借用此系统开设网上商店,也可以作为普通顾客浏览网页进行商品的采购。环境:操作系统windowsXP 编译器 MyEclipse 数据库 Oracle2.2 需求分析 系统应该包括两个角色:管理员,普通用户。管理员只有一个。普通用户可以进行注册,在忘记密码的情况下可以找回密码。电子商城模块应包括两个基本的部分。一个是前台的销售程序,用户在前端浏览(包括查看热销榜)、搜索商品。如同在商场里一样,用户在前台使用一个叫做购物车的工具可以模拟商城的实物购物,用户可以把自己喜欢的商品放入其中(如果库存量不足将会有提示),并可以对已放入其中的商品进行处理,如去掉商品或确认购买并生成订单。用户同样可以对自己的信息进行修改如密码修改,基本信息修改等。每个用户可以查看自己的订单。另一个是后台信息管理程序,商家在此管理本企业的相关信息发布,录入更改网上商品的信息,订单的查询,处理等。同样可以设置活动(如打折活动等),管理程序可以对普通用户进行管理。数据流图:顶层DFD前端销售系统普通用户登陆信息校验 用户订单后台信息管理后台管理员 普通用户一层PDF 热销排行搜索商品查看订单资料管理浏览商品 商品购物车 确认购买 用户订单 用户管理 活动设置订单管理 类别管理商品管理后台管理员 2.3 可行性或难点分析网上购物在国际互联网上可以实现的商务功能已经多样化,从基本的对外沟通展示功能、信息发布功能、在线商品展示功能、到在线洽谈功能、在线采购功能、在线客户服务功能、在线网站管理功能等等,几乎以往传统商店功能都可以在互联网上进行电子化的高效运作。同传统购物方式相比,网上购物方式具有一下优势:首先,对于消费者来说:第一、可以在家里逛商店,订货不受时间限制。 第二、获得大量的商品信息,可以买到当地没有的商品。 第三、网上支付比传统拿现金支付更加安全,可避免现金丢失。 第四、从订货、买货、到货物上门无需亲临现场,即省时又省力。 第五、由于网上商店省去租店面招雇员存贮保管等一系列费用,总的来说其价格较一般商场的同类商品更便宜。 其次,对商家来说,由于网上销售没有库存压力,经营成本低,经营规模不受场地限制等有利因素,在将来会有更多的企业选择网上销售,通过互联网对市场信息的及时反馈适时调整经营战略,以此提高企业的经营效益和参与国际竞争的能力。3 设计模式概述3.1 观察者模式观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。观察者模式有很多实现方式,从根本上说,该模式必须包含两个角色:观察者和被观察对象。在刚才的例子中,业务数据是被观察对象,用户界面是观察者。观察者和被观察者之间存在“观察”的逻辑关联,当被观察者发生改变的时候,观察者就会观察到这样的变化,并且做出相应的响应。如果在用户界面、业务数据之间使用这样的观察过程,可以确保界面和数据之间划清界限,假定应用程序的需求发生变化,需要修改界面的表现,只需要重新构建一个用户界面,业务数据不需要发生变化。观察”不是“直接调用”实现观察者模式的时候要注意,观察者和被观察对象之间的互动关系不能体现成类之间的直接调用,否则就将使观察者和被观察对象之间紧密的耦合起来,从根本上违反面向对象的设计的原则。无论是观察者“观察”观察对象,还是被观察者将自己的改变“通知”观察者,都不应该直接调用。 实现观察者模式有很多形式,比较直观的一种是使用一种“注册通知撤销注册”的形式。下面的三个图详细的描述了这样一种过程: 1:观察者(Observer)将自己注册到被观察对象(Subject)中,被观察对象将观察者存放在一个容器(Container)里。 2:被观察对象发生了某种变化(如图中的SomeChange),从容器中得到所有注册过的观察者,将变化通知观察者。 3:观察者告诉被观察者要撤销观察,被观察者从容器中将观察者去除。 观察者将自己注册到被观察者的容器中时,被观察者不应该过问观察者的具体类型,而是应该使用观察者的接口。这样的优点是:假定程序中还有别的观察者,那么只要这个观察者也是相同的接口实现即可。一个被观察者可以对应多个观察者,当被观察者发生变化的时候,他可以将消息一一通知给所有的观察者。基于接口,而不是具体的实现这一点为程序提供了更大的灵活性。3.2 适配器模式 在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 有两类适配器模式: 对象适配器模式 - 在这种适配器模式中,适配器容纳一个它我包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。 类适配器模式 - 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。 关于JAVA适配器的解释 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 Gang of Four 基本概念: 客户:需要调用我们的代码的对象。 Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。3.3 生成器模式生成器模式又名:建造(Builder)模式 ; L1 o; h R1 F7 , Q意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。4 h+ I7 a/ : K xv* t适用性:; g q& 6 V9 6 在以下情况使用Build模式. w7 I5 u) h( F/ d$ F, B$ u+ 7 U& |7 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;/ 4 W2 n) Q R1 r: q( E! i g0 当构造过程必须允许被构造的对象有不同的表示时。参与者* S4 _* C W; S1 U8 Builder# ; 3 J3 b, R0 q为创建一个Product对象的各个部件指定抽象接口。& J& l9 C 6 o/ L/ zConcreateBuilder7 _: 1 I! 3 Q1 S9 I9 D4 J实现Builder的接口以构造和装配该产品的各个部件。定义并明确它所创建的表示。 q9 + ?. b& b6 _- x提供一个检索产品的接口Director% F z I5 k, Z N构造一个使用Builder接口的对象。Product:表示被构造的复杂对象。ConcreateBuilder创建该产品的内部表示并定义它的装配过程。包含定义组成部件的类,包括将这些部件装配成最终产品的接口。协作客户创建Director对象,并用它所想要的Builder对象进行配置。一旦产品部件被生成,导向器就会通知生成器。 B0 K) T9 7 |% f- O( f8 z( Y4 K生成器处理导向器的请求,并将部件添加到该产品中。客户从生成器中检索产品。4 系统设计说明4.1 模块整体结构图 用户注册模块普通用户功能模块管理员功能模块4.2 使用说明书数据源名sys数据库:system(ID)system(密码)管理员账号:admin 管理员密码:6666665 系统中的设计模式5.1 分析模式的作用观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。观察者模式有很多实现方式,从根本上说,该模式必须包含两个角色:观察者和被观察对象。5.2 设计一种需求的变化当用户要购买某商品但是该商品的库存不足时,顾客应该留下联系方式,当有货之后通知用户。5.3 系统的扩展增加广告商品(显示在主页面),保存普通用户最近浏览过的商品,添加商品之间的关联等。5.4 模式图5.5 类(接口) public class product extends Observableprivate String name;private float price;public String getName() return name;public void setName() =name;/设置变化点 setChanged(); notifyObservers(name);public float getPrice() return price;public void setPrice() this.price=price;/设置变化点 setChanged(); notifyObservers(new Float(price);/以下可以是数据库更新 插入命令.public void saveToDb().我们注意到,在product类中 的setXXX方法中,我们设置了 notify(通知)方法, 当Jsp表单调用setXXX(如何调用见我的另外一篇文章),实际上就触发了notisfyObservers方法,这将通知相应观察者应该采取行动了.下面看看这些观察者的代码,他们究竟采取了什么行动:/观察者NameObserver主要用来对产品名称(name)进行观察的public class NameObserver implements Observerprivate String name=null;public void update(Observable obj,Object arg)if (arg instanceof String) name=(String)arg; /产品名称改变值在name中 System.out.println(NameObserver :name changet to +name);/观察者PriceObserver主要用来对产品价格(price)进行观察的public class PriceObserver implements Observerprivate float price=0;public void update(Observable obj,Object arg)if (arg instanceof Float) price=(Float)arg).floatvalue(); System.out.println(PriceObserver :price changet to +price);Jsp中我们可以来正式执行这段观察者程序:/request.getRequestURI()是产生本jsp的程序名,就是自己调用自己6 结论6.1 自我评价或总结至此,已经完成了电子商城所有模块的介绍。通过本次课程设计对jsp页面的编写有了比较深刻的理解,能比较熟练的使用Model1模式,同时也使用而来少量的struts框架,struts冲分的体现了MVC的思想,将显示层、业务层和数据层分离,并通过ActionServlet控制着整个页面的流向,使得整个系统设计思路比较清晰。在本次课程设计中同时还用到了文件上传技术,生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论