基于J2EE平台的ERP销售管理系统---毕业论文_第1页
基于J2EE平台的ERP销售管理系统---毕业论文_第2页
基于J2EE平台的ERP销售管理系统---毕业论文_第3页
基于J2EE平台的ERP销售管理系统---毕业论文_第4页
基于J2EE平台的ERP销售管理系统---毕业论文_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

本 科 毕 业 论 文 基于J2EE平台的ERP销售管理系统ERP Sales Management System Based on J2EE姓 名: 学 号:学 院:软件学院系:软件工程专 业:软件工程年 级:校外指导教师: 校内指导教师: 年 月摘 要 如今的社会已进入信息化时代,高效的信息化系统已渗透各行各业,大大推动了经济的发展,信息化的程度是衡量一个国家科技发展的重要标志。随着软件行业的飞速发展,国内外信息化建设已进入以Web应用为基础核心的阶段。基于Java语言的J2EE平台以其独特的优势成为Web应用和企业应用的最佳平台。各领域的信息化需求给软件行业的发展带来了机遇,同时也带来了挑战。一个成功软件系统的开发需要和谐的团队合作,合理的项目管理,良好的软件架构和开发流程。如今的软件系统越来越来庞大,业务逻辑越来越复杂,失败的案例很多。这就需要有可依据的模板,提高软件的重用和开发效率。很幸运,得益于各位前辈的努力,我们拥有了很好的架构设计模式和框架。比如基于J2EE平台的MVC设计模式和Struts-Spring-Hibernate框架等。本论文论述胶卷公司ERP销售管理系统的开发和设计,该项目基于J2EE平台。在开发和设计时充分利用了软件设计模式中的MVC模式、工厂模式、单点模式和代理模式等,并有机地把Struts、Spring和Hibernate这三个框架结合起来使用。通过在J2EE平台里合理地使用模式和框架,大大减低了系统的开发时间和成本,提高了模块重用性和系统性能,方便系统的变更和维护,提高系统可靠性和安全性,并能使系统快速投放到市场。 设计模式(Design Pattern)指的是在软件的建模和设计过程中运用到的模式。并在GoF编写的一本经典书籍Design Patterns : Elements of Reusable Object-Oriented Software推动下流行起来。 框架(Framwork)是应用系统的骨架,将软件开发中反复出现的任务标准化,以可重用的形式提供使用。给系统的搭建提供很好的模板支持。合理的使用设计模式和框架能给我们的软件系统带来高效,我们应该重视常用设计模式和框架在软件系统开发中的作用,并能在实际的项目中灵活运用它们。关键词: 设计模式;框架;销售管理AbstractAs we entered the era of information, efficient information systems has penetrated all walks of life and greatly promoted the development of economic. Therefore, the degree of informatization is an important indicator of the development of a national science and technology.With the rapid development of the software industry, the informatization construction both at home and abroad have access the stage that base on Web application. J2EE based on Java, with its unique advantages, has become the best platform for Web applications and enterprise applications. Informatization demands in all areas have brought the software industry opportunities as well as challenges. A successful development of software system needs good team work, good project management and good software architecture and development process. Nowadays, as software systems become more and more huge and business logic more and more complex, more the fail cases are emerged. As a result, more templates are needed to improve the efficiency of software. Thanks to the efforts of my predecessors, we have good design patterns and frameworks, like the MVC design pattern, based on the J2EE platform, and the Struts-Spring-Hibernate framework etc.In this paper, we will talk something about development and design of Penfibre Film on ERP sales management system. The project based on the J2EE platform. In the development and design, we make full use of the MVC design pattern in models, factory models, single point mode and proxy mode. And organically to Struts, Spring and Hibernate frameworks that combine the use of the three. Through the rational use of models and frameworks in the J2EE, they can greatly decrease system development time, reduce development costs. Furthermore they would facilitate system changes and maintenance, improve system reliability and security and enable the rapid delivery to market etc.Design patterns, driven popular by a classical book Design Patterns: Elements of Reusable Object-Oriented Software , written by GoF, are that apply to the software modeling and designing. Framework is the skeleton of an application system. It will standardize the recurring tasks in software development and provide good template supports for system structures.Proper use of design patterns and frameworks will bring high-performance to software systems. Therefore we should attach great importance design patterns and frameworks, and use them flexibility in projects. Key Words: Design Pattern; Framework; Sale Management 目 录第一章引言1第二章软件设计模式和SSH框架的应用32.1 J2EE平台简介32.2 胶卷公司ERP销售管理系统简介42.3 软件设计模式52.3.1 软件设计模式的概念52.3.2 软件设计模式在ERP系统的应用62.4 SSH框架222.4.1 框架概念222.4.2 使用框架的好处232.4.3 框架在ERP系统的应用24第三章销售管理系统的总体设计293.1 总体设计的目的293.1.1 项目背景293.1.2 数据定义303.2 任务概述303.2.1 目标303.2.2 用户的特点313.2.3 假定和约束313.3 需求规定313.3.1 对功能的规定313.3.2 对性能的规定473.4 运行环境49第四章销售管理系统的详细设计504.1 系统总体结构504.2 系统详细结构514.3 web应用程序设计554.4 组织结构564.5 数据库的设计60第五章系统展示615.1 系统登入模块展示615.2管理维护模块展示63第六章总结和展望666.1 总结666.2 展望66致谢67参考文献68CatalogChapter1 Preface1Chapter2 Software design pattern and SSH framework32.1 About J2EE platform32.2 Penfibre e-biz system42.3 Software design pattern52.3.1 The concept of software design patterns52.3.2 Software design pattern of the ERP system62.4 SSH framework222.4.1 About framework222.4.2 The benefits of the use of the framework232.4.3 Framework of the ERP system24Chapter3 The overall design of sales management system 293.1 The purpose of the overall design293.1.1 Background of project293.1.2 Data Definition303.2 Overview Tasks303.2.1 Target303.2.2 The characteristics of users313.2.3 Assumptions and constraints313.3 The provisions of requirement313.3.1 The provisions of function313.3 .2 The provisions of performance473.4 Operating environment49Chapter4 The detailed design of sales management system504.1 The overall structure of the system504.2 The detailed structure of the system514.3 web application design554.4 Organizational structure564.5 Database design60Chapter5 System display 615.1 System login module display615.2 Management of the maintenance module to display63Chapter6 Summary and outlook666.1 Summary666.2 Outlook66Acknowledgement67References68第一章 引言 第一章 引言大学的本科生活即将结束,来到了非常重要的毕业设计和毕业论文的忙碌时间。对我来说,毕业设计和毕业论文是我四年本科学习的一个总结,所以我非常重视它们。这次的毕业设计,我的校内指导教师是教授,校外指导教师是我所在实习单位的架构师。在这两位教师的指导下,我顺利地完成了毕业设计,真的很感谢他们两位的精心指点。我的这篇论文的主题是议论基于J2EE平台的Penfibre_Film ebiz项目的开发和设计,该ERP销售管理系统在开发和设计时主要用到了几种设计模式和框架。众所周知,J2EE平台是开发Web应用和企业应用的主流平台,在这平台之上开发出的系统具有很好的可移植性,良好的可扩展性等。更为让人兴奋的是,很多大的开源项目都在支持J2EE技术,很多精英团队充分利用J2EE规范开发出了新的技术和框架,使J2EE平台越来越成熟,得到很多软件开发团队的拥护。要开发出一个良好的系统,就需要一个良好的系统设计。在明确系统的需求后,我们应该设计出一个符合需求的系统构架。在系统设计阶段,能有效的利用设计模式,可使系统有个统一的开发模式,方便团队同步开发;使系统更健壮,当出现需求变更时,代码的改动量少,达到高内聚,低耦合的目标;使系统的可扩展性好,方便的加入新的业务功能等。例如MVC模式可实现系统的合理分层,现在很流行的三层架构就是以MVC模式为基础。基于设计模式能给我们系统带来的种种好处,我们应该重视设计模式在软件开发的重要性,在设计系统时,根据系统具体需求,合理的利用设计模式能让我们得出一个让客户满意的交付。现在的软件开发,我们不再从头做起,而是合理的重用已经得到正确验证的资源。在J2EE规范之上发展而来的很多优秀框架就是可重复利用的资源,它们对一再出现的问题进行抽象,以重用的形式提供使用。大多的框架提供了可执行的具体程序代码,支持迅速地开发出可执行的应用。好的抽象,设计成功的框架,能够大大缩短应用系统开发的周期;在预制框架上加入定制的构件,可以大量减少编码量,并容易测试等。在项目开发时,选择正确的框架,对系统的开发起到事半功倍的作用。本论文一共分为5章,为方便读者的阅读,我就简单的介绍每章的内容。第一章是引言,介绍了论文的背景和论点。第二章是基于J2EE平台的简述,介绍几种软件设计模式和Struts-Spring-Hibernate这三种组合框架在项目中的运用。第三章为销售管理系统的总体设计。第四章销售管理系统的详细设计。第五章为系统的部分功能展示。第六章为结语和展望。69第二章 软件设计模式和SSH框架的应用 第二章 软件设计模式和SSH框架的应用2.1 J2EE平台简介 J2EE Java2平台企业版(Java 2 Platform, Enterprise Edition)。J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构,是一套软件构架平台,用于规范企业应用的开发,不是一个直接可用的产品,是基于JAVA技术的一系列标准完全不同于传统应用开发的技术架构,其把JAVA领域的好多成熟技术集成起来,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。 一组技术规范是J2EE的核心内容,这些JAVA技术有共通的标准及规格,由这些技术规范开发出了很多中间层集成框架,可来满足无需太多费用而又需要高可用性、高可靠。这些让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。为企业解决方案提供了非常好的机制:(1) 充分利用企业已有的IT资产,当企业有新的需求时,不用完全开发出新的系统,而是在企业已有的企业信息系统基础上增添需求,是企业的资产得到最大的合理利用。(2) 高效的开发,通用的繁琐功能可以直接利用其他开发商发布的中间件。开发人员把最大的精力放在如何创建商业逻辑上。在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块如果每次再开发中都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题。(3) 不依懒特定的平台,J2EE平台开发出的应用程序不依懒于特定的操作系统,中间件和服务器,开发一次,可多平台部署,具有很好的可移植性。(4) 可伸缩性能好,基于J2EE平台的应用程序可被部署到各种操作系统上。供应商提供了更为广泛的负载平衡策略。能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。 (5) 稳定的可用性,应用部署到可靠的操作环境中,支持长期的可用性1。2.2 胶卷公司ERP销售管理系统简介 本篇论文的实践依据是本人正在参与开发的胶卷公司ERP销售管理系统,即Penfibre Film ebiz项目,该系统基于J2EE平台的Web应用和企业应用,属于大型系统的范畴。论文中的各种结论基本上在系统中得以实现。就从几个方面对该ERP系统做个简单介绍。ERP(Enterprise Resource Planing)企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。ERP系统集中信息技术与先进的管理思想于一身,成为现代企业的运行模式,反映时代对企业合理调配资源,最大化地创造社会财富的要求,成为企业在信息时代生存、发展的基石。该ERP销售管理系统是基于互联网的应用软件,属于半自动化的管理系统,用户通过它可方便的进行各种操作。客户可以随时查看产品的促销活动,随时了解产品的价格和订购产品,还可以跟踪定单的状态并适时的修改定单等。销售管理人员可对客户的定单加以审核,通过后就可以生成定单合同等。这样就可以把客户的订货和销售人员的处理统计得到很好的优化,提高了企业销售透明度的同时更是拉紧了客户和公司的距离,建成一个精简、高效、廉洁、公平的运作模式,以便全方位地向社会提供优质、规范、透明、符合国际水准的管理与服务。是公司的销售管理方便化,节省成本的同时提高了公司的销售水平。该ERP销售管理系统是现代企业管理系统的一个重要组成部。随着现代企业业务的增长,日常的人工定单管理已经不再适应高速发展的业务需求,采用计算管理实现对销售定单的统一管理。一般的定单管理只是对定单的简单记录不能实现对数据的分析,定单管理还必要和企业的其他系统相适应,必须能够很好的和企业其他系统的交互,实现数据的统一和企业系统的集成。2.3 软件设计模式2.3.1 软件设计模式的概念模式(Pattern)是一种重复出现问题的通用解决方案,这个问题背景应该是多种多样的,没有固定的场景。不同领域的很多问题,往往看似不相干,却会有相同的问题背景,从而需要应用相同的解决方案模式来解决。模式的研究起源于建筑工程设计大师Christopher Alexander的关于城市规划和建筑设计的著作。尽管他的著作是针对城市规划和建筑设计的,但是作者的观点实际上适用于所有的工程设计领域,包括软件开发设计领域等,也说明了模式的在不同领域的通用性。后来,这个概念逐渐被计算机科学所采纳,并在一本广为接受的经典书籍的推动下而流行起来。这本书是:Design Patterns : Elements of Reusable Object-Oriented Softwar (设计模式:可复用面向对象软件元素),是有4位软件大师合写的(很多时候我们直接用GoF来意指这4位作者,GoF的意思是Gangs of Four四人帮)。设计模式指的是在软件的建模和设计过程中运用到的模式。设计模式中很多种方法其实早就出现了,并且应用得比较多。但是知道GoF的书出来之前,并没有一种统一的认识。或者说,那时侯并没有对模式形成一个概念,这些方法还仅仅是处在经验阶段,并没有被系统地整理,形成一种理论2。每一个设计模式都系统地命名,解释和评价了面向对象系统中一个重要的和重复出现的设计。这样,我们只要清楚这些设计模式,就可以完全或者说很大程度上吸收了那些蕴涵在模式中的宝贵经验,对面向对象的系统能够有更为完善的了解。更为重要的是,这些模式都可以直接用来指导面向对象系统中至关重要的对象建模问题。如果有相同的问题背景,那么很简单,直接套用这些模式就可以了,这可以省去你很多的工作量。2.3.2 软件设计模式在ERP系统的应用 我正在参与开发的项目是胶卷公司ERP销售管理系统,属于中大型的企业应用,开发的难度较大,业务逻辑繁多,没有合理的过程开发很容易失败。架构的构建是该系统开发过程中的一项重要工作,同时也是一项很困难的工作,即便对于很有经验的系统架构师也是如此。幸运的是,模式以及模式语言的提出给出了一条构建系统架构的有效途径。所有结构良好的面向对象软件系统架构中都包含r许多模式。实际上,当评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使生成的系统架构更加精巧、简洁和易于理解其程度远远超过了未使用模式的系统架构。模式能够使我们以更大的概念组块来理解复杂系统,从而减轻认知上的负担。在开发过程中,我们就应用到了不少的设计模式和框架,从而大大简化了系统的开发难度,它们是该ERP系统架构的基石,贯穿于系统开发的各个阶段,在系统建模,需求分析,概要设计,详细设计,具体编码,单元测试,留下了很深的烙印。设计模式在软件的应用大概有23种,可划分为3大类,分别为创建模式,结构模式和行为模式,分别从对象的创建,对象和对象间的结构组合,以及对象交互这3个方面为面向对象系统建模方法给予了解析和指导,几乎可以说是包罗万象。之后,有很多模式陆续出现,比如分析模式,体系结构模式等。主要的23个设计模式概述如下:(1) Abstract Factory提供一个创建一系列相关或相互依赖对象的接口,而无须制定它们具体的类。(2) Adapter将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。(3) Bridge将抽象部分与它的实现部分分离,使它们都可以独立的变化。(4) Builder将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(5) Chain of Responsibility解除请求的发送者和接收者之间的耦合,从而使多个对象都有机会处理这个请求。将这些对象连接成一条链来传递该请求,直到有一个对象处理它。(6) Command将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,对请求排列或者记录请求日志,以及支持取消操作。(7) Composite将对象组合成树型结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。(8) Decorator动态地给对象添加一些额外的任务。(9) Faade为子系统中的一组接口提供一个一致的界面。(10) Factory Method定义一个用于创建对象的接口,让子类决定将哪个类实例化。(11) Flyweight运用共享技术有效的支持大量细粒度(Fine Grained)的对象。(12) Interpreter给定一个语言,定义它的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。(13) Iterator提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。(14) Mediator用一个中界对象来封装一系列的对象交互。(15) Memento在不破坏封装性的前提下,捕捉一个对象的内部状态,并在该对象之外保存这个状态。(16) Observer定义对象之间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有以来它的对象都得到通知并自动刷新。(17) Prototype用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。(18) Proxy为其他对象提供一个代理,以控制对这个对象的访问。(19) Singleton保证一个类只有一个实例,并提供一个访问它的全局访问点。(20) State允许一个对象在起内部状态改变时改变它的行为。(21) Strategy定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。(22) Template Method定义一个操作中的算法框架,而将一些步骤延迟到子类中。(23) Visitor表示一个作用于某对象结构中的各元素的操作3。 MVC模式(1)MVC的概念MVC (Model-View-Controller)模式是我们在软件设计中最常用的一种设计模式,也是最重要,最著名的设计架构模式。在三层架构的WEB应用得到充分的利用,View用于表示层,通过多种视图把数据显示给用户;Model用于封装数据和实现对数据的访问;Controller常用于连接View和Model,控制业务逻辑。MVC模式的结构如图2-1所示:图2-1: MVC模式的结构图从上图我们可以看出,经典的MVC模式把Model,View和Controller有机的结合在一块,各自分工的同时又紧密合作,分层很好的可降低系统的耦合度,方便系统的同步开发,变更和维护等。下面就对MVC中三个组成部分的作用作个具体的介绍:l 视图(View):视图是程序的可视化元素,用于前端显示给用户,如对话框、选单、工具条等都属于试图。界面以不同的试图形式显示从模型中提供的数据,方便终端用户对数据的理解,它并不控制数据或提供除显示外的其它行为,只单一以最好理解的方式显示数据给用户。l 模型(Model):模型包含完成系统需求所需要的所有的行为和数据。用面向对象的编程思想封装数据在普通的类中,对提供了对这些实体类进行访问的接口和起实现类。不让用户在前端直接操作数据,提高了对后台数据进行访问的安全性。l 控制器(Controller):控制器连接前端视图和后台模型,将返回的模型数据映射到界面中,方便用户的理解。控制器处理用户的输入请求,每个界面有一个控制器。它是一个接收用户输入、创建或修改适当的模型对象并且将修改在界面中体现出来的状态。控制器在需要时还负责创建其它的界面和控制器。对请求进行处理后,就调用下层的相应业务逻辑方法。控制器决定哪些界面和模型组件应该在某个给定的时刻是活动的,它负责接收和处理用户的输入,来自用户输入的任何变化都被从控制器送到模型。 界面从模型内的对象中显示数据。这些对象的改变可以通过也可以不通过用户的交互操作来完成。如:在一个Web浏览器中负责接收页面的对象收集和装配栈中的信息,必须有某种方式来让这些对象通知界面数据已经被改变了。在模型变化时有两种方法来对界面进行更新。在第一种方法中,界面可以告诉模型它正在监视哪些对象。当这些对象中有任何一个发生变化时,一个信息就被发送给界面。界面接收这些信息并且相应地进行更新。为了避免我们上面讨论的不足,模型必须能够不用修改就支持许多种不同的界面显示。 第二个方法并不直接将界面连接到模型中,它的控制器负责在模型变化时更新界面。控制器通过对模型对象或观察器方法进行监测来检测模型中的变化。这个方法不用了解界面的模型知识,因此界面就变成是可以跨应用使用的4。(2)使用MVC的好处MVC通过以下三种方式消除与用户接口和面向对象的设计有关的绝大部分困难:第一,控制器通过一个状态机跟踪和处理面向操作的用户事件。这允许控制器在必要时创建和破坏来自模型的对象,并且将面向操作的拓扑结构与面向对象的设计隔离开来。这个隔离有助于防止面向对象的设计走向歧途。 第二,MVC将用户接口与面向对象的模型分开。这允许同样的模型不用修改就可使用许多不同的界面显示方式。除此之外,如果模型更新由控制器完成,那么界面就可以跨应用再使用。 第三,MVC允许应用的用户接口进行大的变化而不影响模型。每个用户接口的变化将只需要对控制器进行修改,但是既然控制器包含很少的实际行为,它是很容易修改的。 面向对象的设计人员在将一个可视化接口添加到一个面向对象的设计中时必须非常小心,因为可视化接口的面向操作的拓扑结构可以大大增加设计的复杂性。 MVC设计允许一个开发者将一个好的面向对象的设计与用户接口隔离开来,允许在同样的模型中容易地使用多个接口,并且允许在实现阶段对接口作大的修改而不需要对相应的模型进行修改5。(3)MVC模式在ERP系统中的实践该ERP销售管理系统的整体架构就应用了MVC设计模式,系统采用基于J2EE平台的三层WEB开发结构,分为表示层,业务逻辑层和持久层,表示层体现了View,业务逻辑层映射了Controller,持久层利用了Model。JSP技术用于表示层的视图显示;Struts 2的action机制负责业务逻辑层的大部分功能实现;Hibernate技术中的ORM机制和HiberbateTemplate接口分别提供了对数据进行封装和访问,很好的实现了持久层的功能需要。系统采用了Struts 2框架,该框架的设计核心就是MVC模式,下面就介绍Struts 2利用MVC在系统中的具体应用:1控制层(Controller): Struts 2使用了Filter技术,FilterDispacher是Struts框架的核心控制器,该控制器负责拦截和过滤所有的用户请求。用户请求都通过项目的web.xml文件中的Filter过滤,如果用户请求是action,该请求将被转入Struts框架来进行处理。Struts获得了action请求后,将根据action请求的名称决定调用哪个业务控制器action类。所有action都在项目中的struts.xml中配置,struts.xml配置文件的内容如图2-2所示:图2-2: struts.xml配置文件的内容用于处理用户请求的action实例,并没有与Servlet API耦合,所以无法直接处理用户请求。为此,Struts提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,并进行数据类型转换等,然后传入到action中,并回凋Action的execute方法来处理用户请求。该系统中的登入action代码如组图2-3所示:(a) action的上半部分代码(b) action的下半部分代码图2-3: 项目中action的代码2.显示层(View)Struts 2框架的主要视图技术是JSP,另外也支持FreeMarker,Velocity等显示技术。当一个action处理完用户的请求后,会返回一个String类型的结果,该字符串代表逻辑视图,对应struts.xml配置文件中该action中的result类型。在struts.xml文件中配置action时,还要指定调用该action后要执行的result,每个result定义了逻辑视图和物理视图之间的映射。如上文struts.xml配置文件中/Filmebiz/Common/userAccess/Login.jsp 。3.模型层(Model)模型层指的是后端业务逻辑处理,它会被action调用来处理用户请求。在该ERP系统中,用Hibernate的ORM映射机制把数据库中的表导出封装成普通的JavaBean,并在dao包中利用HibernateTemplate类实现对实体类的访问。当控制器需要获得业务逻辑组建实例时,通常并不会直接获取业务逻辑组件实例,而是通过工厂模式来获得业务逻辑组件的实例;或者利用其他IoC容器(如Spring容器)来管理业务逻辑组件的实例。基于MVC的系统中的业务逻辑组件还可以细分为两个概念: 系统的内部状态以及能够改变状态的行为。我们可以把状态信息当做名词(事物),把行为当做动词(事物状态的改变),它们使用JavaBean,EJB或Web Service实现。 工厂模式(1) 工厂模式简介 在软件开发项目中,工厂模式得到最广泛的运用,随处都有可以用到工厂模式的地方,使用工厂模式会给系统的变更和扩展带来极大的便利。面向对象的设计思想,就是抽象对象,需要使用时再进行实例化。一般情况下,要实例化一个对象时,最常用的形式是new一个对象,这样是简单方便。但有新类出现是,同一个地方需要用新的类对象时,就会修改代码,重新new一个对象而删除掉之前的对象,这样就会给程序带来较大的变动,不利于系统的变更和维护。这时可以考虑使用工厂模式,可能多做一些工作,但会给系统带来更大的可扩展性和尽量少的修改量。以ERP项目的类Session为例,采用Hibernate的ORM机制,要对数据库进行操作,须取得Session类对象。如果要创建Session的实例对象:Session session = new Session();如上所示,创建Session实例时如果要做些初始化的工作。可以使用Session的构造函数,这样生成实例就写成:Session session = new Session(Object object);如果创建实例Session时所做的初始化工作不像赋值这样简单,Object object是很长的一段字符串,写入构造函数中,那代码就那么精练。仔细分析不难发现,如果创建实例时的初始化工作是很长一段代码,这说明需要附加的工作量会很大,将很多工作装入一个方法中是很不合理的,这有背于Java面向对象的原则。我们知道,面向对象的封装和分派机制,就是将大的的代码模块分成小的模块,再将小代码模块封装起来,合理的分割可减少模块和模块之间耦合度。这样,就会将风险分散,如果代码需要变更,只涉及小的代码模块,而不影响其他的模块。将创建实例的工作与使用实例的工作分开, 可以让创建实例所需要的大量初始化工作从Session的构造函数中分离出去。采用工厂模式来生成对象了,可实现上述的分离机制。如果Session有个子类如ChildSession,按照面向接口编程,我们需要将Session抽象成一个接口。假设Session有两个子类FirstSession 和SecondSession。我们要实例化他们时,如下:Session firstSession =new FirstSession ();Session secondSession=new SecondSession ();随着项目的深入, Session可能还会生出很多子类, 需要对这些子类一个个实例化,可能还要对以前的代码进行修改,以便加入后来子类的实例,这样就使代码的变更很大,不利于代码的扩展。有效的采用工厂模式,可避免这个问题。(2)工厂模式分类按照创建实例的复杂程度,工厂模式可分为工厂方法(Factory Method)和抽象工厂(Abstract Factory)。1工厂方法一个简单的工厂方法代码如下:public class Factorypublic static Session getInstance(int choice)if (choice = 1)return new FirstSession();else if (which = 2)return new SecondSession();要创建Session实例时,可为:Session firstSession = Factory.getInstance(1);这样,在整个就不涉及到Session的具体子类,达到良好的封装效果,方便代码的变更和扩展。2抽象工厂如果创建实例时需要的接口不是唯一,就可利用抽象方法。假设有另外个接口SessionTwo。Session有两个实现类FirstSessionOne和SecondSessionOne,SessionTwo也有两个实现类FirstSessionTwo和SecondSessionTwo。那么,我们就将上例中Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现,下面就是将上例中的Factory拓展成抽象工厂:public abstract class Factorypublic abstract Session getInstance();public abstract SessionTwo getInstance(String name); public class SimpleFactory extends Factorypublic Session getInstance().return new FirstSessionOne();public SessionTwo getInstance (String name).return new FirstSessionTwo();public class TestFactory extends Factorypublic Session getInstance ().return new SecondSessionOne ();public SessionTwo getInstance (String name).return new SecondSessionTwo();上述的例子可以看出,工厂各自生产出一套Session和SessionTwo。为什么我不可以使用两个工厂方法来分别生产Session和SessionTwo? 这是因为抽象工厂还有另外一个关键要点,在SimpleFactory内,生产Session和生产SessionTwo的方法之间有一定的耦合,所以才要将这两个方法捆绑在一个类中,这个工厂类有其本身特征6。使用工厂模式可以方便的创建实例,当系统有新的类出现时,可方便的添加到工厂中,使系统具有更好的变更和扩展。在该ERP项目中,一个使用工厂模式例子的代码如图2-4所示:图2-4:项目中工厂模式的代码 单点模式(1)单点模式的定义单点(Singleton)模式指的是一个类在系统中只能有一个实例存在,在第一次被加载时自动被实例化,以后需要调用该类的方法时不能创建该类的实例对象,直接调用其静态方法即可。在很多操作中,比如建立目录、数据库连接都需要这样的单线程操作。基于单点类有只被实例化一次的功能,singleton能够被状态化。多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如要取得网站的被访问次数,需要一个计数器,每次浏览一次需要计数,单态类能保持住这个计数,并且能synchronize的安全自动加一,这样可很简单的实现网站被访问次树的计数功能。Singleton也能够被无状态化,提供工具性质的功能。Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)7。当某个资料或功能被系统反复使用时,我们可以考虑使用单点模式,这样可减少类被创建的次数,提高系统性能。(2)单点模式的表示形式Singleton模式可通过如下两种方式来实现:第一种形式:public class Singleton private Singleton()private static Singleton instance = new Singleton(); public static Singleton getInstance() return instance; 第二种形式:public class Singleton private static Singleton instance = null; public static synchronized Singleton getInstance() if (instan

温馨提示

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

评论

0/150

提交评论