欢迎来到天天文库
浏览记录
ID:31710515
大小:57.53 KB
页数:4页
时间:2019-01-17
《介绍jsf框架中使用的设计模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、设计模式可以帮助用户在更高层次上抽象细节,更好地理解体系结构。如果比较熟悉GoF设计模式和JavaServerFaces(JSF)框架,本文可以帮助您洞察JSF框架中使用的设计模式,深入理解其工作原理。设计模式和JavaServerFaces(JSF)技术,首先简要地介绍一下模式和JSF框架。模式设计模式是对问题和解决方案进行抽象的普遍适用的方法。因为模式是所冇开发人员和架构师公认的,所以模式可以节约时间和资源。川外行话來说,模式就是关于某个人所共知的问题的经过验证的解决方案。模式可以重用,重用使得
2、解决方案更健壮。JavaServerFaces»JSF体系结构是一种Web应用程序框架。它是JavaCommunityProcess(JCP)推动的,有望成为Web应用程序开发的标准框架。H前用于开发Web应用程序的框架冇50名个,这说明迫切需耍实现框架的标准化,这正是JSF框架的冃标!深入剖析JSE模式现在我们來讨论各种JSF体系结构中的设计模式。木文将详细讨论SingletonsMode1-View-Contro11ersFactoryMethod、State、Composite、Decorat
3、or、Strategy,TemplateMethod和Observer设计模式。我将分析每种模式的用途及其在JSE框架屮的作用。Singleton模式Singleton模式的冃的是保证类只有一个实例被加载,该实例提供一个全局访问点。当启动具有JSF支持的Web应用程序时,Web容器初始化一个FacesServlet实例°在这个阶段,FacesServlet对每个Web应用程序实例化Application和IJfcCycle实例-次。这些实例就采用众所周知的Singleton模式,通常只需要该类型的一
4、个实例。使用JSF的Web应用程序只需要Application和LifeCycle类的一个实例。LifeCycle管理多个JSF请求的整个生命期°因为其状态和行为在所冇请求之间共•亨,这些对象采用Singleton模式合情合理。LifeCycle维护的PhaseListeners也是Singleton模式的。PhaseListeners由所有JSF请求共享。在JSF框架中可以广泛使用Singleton模式,以减少内存占用和提供对象的全局访问。Navigationllandler(川于确超请求的逻辑结
5、果)和ViewHandler(用于创建视图)也是使用Singleton模式的例子。Model-View-Controller(MVC)MVC模式的日的是从数据表示(View)中将数据(即Model)分离岀来。如杲应用程序冇多种表示,可以仅替换视图层而重用控制器和模型代码。类似的,如果需要改变模型,可以在很大程度上不改变视图层。控制器处理用户动作,川户动作可能造成模型改变和视图更新。当用户请求一个JSF页面时,请求发送到FacesServleloFacesServlet是JSF使用的前端控制•器ser
6、vlet。和其他很多Web应用程序框架一样,JSF使用MVS模式消除视图和模型之间的耦合。为了集中处理用户请求,控制器servlet改变模型并将用户导航到视图.FacesServlet是JSF框架中所有用户请求都要经过的控制器元素。FacesServlet分析用户请求■使用托管bean对模型调用各种动作。后台(backing)或托管(managed)bean就是该模世的例子。JSE用户界面(UI)组件是视图层的例子。MVC模式把任务分解给具冇不同技能的开发人员,便这些任务能够同时进行,这样GUI设计
7、人员就可以使用丰富的UI组件创建JSF贝面,同时后端开发人员可以创建托管bean来编写专门的业务逻辑代码。FactoryMethod模式FactoryMethod模式的冃的是定义一个用于创建对象的接口,但是把对彖实例化推迟到子类中。在JSF体系结构中,FactoryMethod模式被用于创建对彖cLifeCycleFactory是一个创建和返回LifeCycle实例的丁厂对象。LifeCyc1eFactory的getLifeCycle(StringLifeCycleld)方法采用FactoryMet
8、hod模式,根据LifeCycleld创建(如果需要)并返回LifeCycle实例。自定义的JSF实现可以重新定义getLifeCycle抽象方法來创建自定义的LifeCycle实例。默认的JSF实现提供默认的LifeCycle实例。此外,对于每个JSF请求,FacesServlet都从EaccsContextFactory得到FacesContextoEacesContextFactory是一个抽象类,公开了getFacesContextAPI,JSF实现提供了Fa
此文档下载收益归作者所有