探寻JSF架构中应用的设计方案方式

2021-03-17 06:11 jianzhan
设计方案方式能够协助客户在高些层级上抽象性关键点,更强自然地理解管理体系构造。假如较为了解GoF设计方案方式和JavaServerFaces(JSF)架构,文中能够协助您洞悉JSF架构中应用的设计方案方式,深层次了解其工作中基本原理。 文中讨论了JSF架构中应用的设计方案方式。详尽探讨的设计方案方式包含Singl

探寻JSF架构中应用的设计方案方式

设计方案方式能够协助客户在高些层级上抽象性关键点,更强自然地理解管理体系构造。假如较为了解GoF设计方案方式和JavaServerFaces(JSF)架构,文中能够协助您洞悉JSF架构中应用的设计方案方式,深层次了解其工作中基本原理。

文中讨论了JSF架构中应用的设计方案方式。详尽探讨的设计方案方式包含Singleton、Model-View-Controller、FactoryMethod、State、Composite、Decorator、Strategy、TemplateMethod和Observer方式。

设计方案方式和JavaServerFaces(JSF)技术性

最先扼要地详细介绍一下方式和JSF架构。

方式。设计方案方式是对难题调解决计划方案开展抽象性的广泛可用的方式。由于方式是全部开发设计工作人员和构架师认可的,因此方式能够节省時间和資源。用非专业话来讲,方式便是有关某一人所共知的难题的历经认证的处理计划方案。方式能够器重,器重促使处理计划方案更健硕。

JavaServerFaces。JSF管理体系构造是一种Web运用程序架构。它是JavaCommunityProcess(JCP)促进的,有希望变成Web运用软件开发的规范架构。现阶段用以开发设计Web运用程序的架构有50好几个,这表明急切必须完成架构的规范化,这更是JSF架构的总体目标!

深层次分析JSF方式

如今大家来探讨JSF管理体系构造中的各种各样设计方案方式。文中将详尽探讨Singleton、Model-View-Controller、FactoryMethod、State、Composite、Decorator、Strategy、TemplateMethod和Observer设计方案方式。我将剖析每个方式的主要用途以及在JSF架构中的功效。

Singleton方式

Singleton方式的目地是确保类仅有一个案例被载入,该案例出示一个全局性浏览点。当起动具备JSF适用的Web运用程序时,Web器皿原始化一个FacesServlet案例。在这里个环节,FacesServlet对每一个Web运用程序案例化Application和LifeCycle案例一次。这种案例就选用大家都知道的Singleton方式,一般只必须该种类的一个案例。

应用JSF的Web运用程序只必须Application和LifeCycle类的一个案例。LifeCycle管理方法好几个JSF恳求的全部性命期。由于其情况和个人行为在全部恳求中间共享资源,这种目标选用Singleton方式有理有据。LifeCycle维护保养的PhaseListeners也是Singleton方式的。PhaseListeners由全部JSF恳求共享资源。在JSF架构中能够普遍应用Singleton方式,以降低运行内存占有和出示目标的全局性浏览。NavigationHandler(用以明确恳求的逻辑性結果)和ViewHandler(用以建立主视图)也是应用Singleton方式的事例。

Model-View-Controller(MVC)

MVC方式的目地是以数据信息表明(View)里将数据信息(即Model)分离出来出去。假如运用程序有多种多样表明,能够仅更换主视图层而器重操纵器和实体模型编码。相近的,假如必须更改实体模型,能够在非常大水平上不变变主视图层。操纵器解决客户姿势,客户姿势将会导致实体模型更改和主视图升级。当客户恳求一个JSF网页页面时,恳求推送到FacesServlet。FacesServlet是JSF应用的前端开发操纵器servlet。和别的许多Web运用程序架构一样,JSF应用MVS方式清除主视图和实体模型中间的藕合。以便集中化解决客户恳求,操纵器servlet更改实体模型并将客户导航栏到主视图。

FacesServlet是JSF架构中常有效户恳求必须历经的操纵器原素。FacesServlet剖析客户恳求,应用代管bean对实体模型启用各种各样姿势。后台管理(backing)或代管(managed)bean便是该实体模型的事例。JSF客户页面(UI)部件是主视图层的事例。MVC方式把每日任务溶解给具备不一样专业技能的开发设计工作人员,使这种每日任务可以同时开展,那样GUI设计方案工作人员便可令其用丰富多彩的UI部件建立JSF网页页面,同时后端开发开发设计工作人员能够建立代管bean来撰写专业的业务流程逻辑性编码。

FactoryMethod方式

FactoryMethod方式的目地是界定一个用以建立目标的插口,可是把目标案例化延迟到子类中。在JSF管理体系构造中,FactoryMethod方式被用以建立目标。LifeCycleFactory是一个建立和回到LifeCycle案例的加工厂目标。LifeCycleFactory的getLifeCycle(StringLifeCycleId)方式选用FactoryMethod方式,依据LifeCycleId建立(假如必须)并回到LifeCycle案例。自定的JSF完成能够再次界定getLifeCycle抽象性方式来建立自定的LifeCycle案例。默认设置的JSF完成出示默认设置的LifeCycle案例。另外,针对每一个JSF恳求,FacesServlet都从FacesContextFactory获得FacesContext。FacesContextFactory是一个抽象性类,公布了getFacesContextAPI,JSF完成出示了FacesContextFactory和getFacesContextAPI的实际完成。它是此外一个应用FactoryMethod方式的事例,实际的FacesContextFactory完成建立FacesContext目标。

State方式

State方式的目地是在表明情况的不一样类中间分派与情况相关的逻辑性。FacesServlet对LifCycle案例启用execute和render方式。LifeCycle融洽不一样的Phrase便于实行JSF恳求。在这里里JSF完成就遵照了State方式。假如沒有应用这类方式,LifeCycle完成便会被很多的标准(即 if 句子)搅得一塌糊里糊涂。JSF完成为每一个情况(或环节)建立独立的类并启用step。phase是一个抽象性类,定了每一个step的公共性插口。在JSF架构中界定了六个phrase(即step):RestoreViewPhase、ApplyRequestValues、ProcessValidationsPhase、UpdateModelValuesPhase、InvokeApplicationPhase和RenderResponsePhase。

在State方式中,LifeCycle把FacesContext目标传送给phase。每一个环节或情况更改传送给它的左右文信息内容,随后设定FacesContext自身中的标示说明下一个将会的流程。JSF完成在每一个流程中更改其个人行为。每一个环节都可以以做为下一个环节的诱因。FacesContext有二种标示renderResponse和responseComplete能够更改实行的次序。每一个流程实行进行后,LifeCycle查验上一环节是不是设定了这种标示。假如设定了responseComplete,LifeCycle则彻底舍弃恳求的实行。假如历经某一环节后设定了renderResponse标示,JSF便会绕过剩余的环节而立即进到RenderResponse环节。假如这2个标示也没有设定,LifeCycle便会按序再次实行下一步。

Composite方式

Composite方式让顾客编码可以统一解决复合型目标和基本目标。复合型目标是基本目标的器皿。在第一环节(RestoreView环节)和最终一个环节(RenderResponse环节),应用JSFUI部件结构UIView。UIComponentBase便是Composite方式中Component抽象性类的一个案子。UIViewRoot是Composite类,而UIOutput(比如说)便是叶子(或是基本类)。UIComponentBase类界定了叶子和复合型目标的公共性方式,如编号/编解码值和子连接点管理方法涵数。子连接点管理方法涵数,如getChildren,针对叶子连接点回到空目录,针对复合型连接点则回到他的儿子连接点。

Decorator方式

Decorator方式的目地不是根据子类化动态性拓展目标的个人行为。JSF架构有许多拓展点(就可以插进体制)。JSF完成可让用Decorator方式更换默认设置的PropertyResolver、VariableResolver、ActionListener、NavigationHandler、ViewHandler或StateManager。一般自定完成接纳根据结构涵数传送给它的默认设置完成的引入。自定完成只是改变作用的一身高集,而将别的作用授权委托给默认设置完成。假如期待完成自定的ViewHandler,改变默认设置ViewHandler完成的calculateLocale方式,能够像明细1那般撰写CustomViewHandler类:

明细1.CustomViewHandler片断

lassCustomViewHandlerextendsViewHandler{

publicCustomViewHandler(ViewHandlerhandler){

super();

oldViewHandler=handler;

}

privateViewHandleroldViewHandler=null;

publicvoidrenderView(iew){

//delegatemethodtooldViewHandler

oldViewHandler.renderView(context,view);

}

//customimplementationofcalculateLocale

publicLocalecalculateLocale(FacesContextcontext){

}

}

Strategy方式

Strategy方式的目地是封裝不一样的定义。JSF架构选用Strategy方式应用授权委托完成实体模型展现UI部件。JSF技术性适用二种展现实体模型。在立即完成实体模型中,UI部件对接到的恳求中的数据信息开展编解码,随后编号这种数据信息开展显示信息。在授权委托完成实体模型中,编解码和编号实际操作授权委托给和建立关系的专业展现器。后一种实体模型运用了Strategy设计方案方式,比立即完成更灵便。在Strategy方式中,将不一样的优化算法封裝在独立的目标中,进而能够动态性地更改优化算法。JSF完成能够用现有的renderkit案例申请注册此外的展现器,当运用程序起动的情况下,JSF完成载入配备文档将这种展现器和UI部件联络在一起。

TemplateMethod方式

TemplateMethod方式的目地是将转变的流程延迟到子类中,而在父类中界定这些固定不动的优化算法流程。JSF架构根据PhraseListeners呈现了TemplateMethod方式出示的作用。选用TemplateMethod(或是 hook )促使Web创作者能够为不一样环节中间的可选择流程出示完成,而关键环节依然和JSF架构的界定一致。JSF架构出示了PhaseListeners,定义上相近于TemplateMethod方式中的可变性流程。JSF架构有六个预订义的环节,在每一个环节中间,Web创作者能够完成PhaseListeners来出示相近于TemplateMethodhook的hook。客观事实上,这类构造比TemplateMethod方式更具有有拓展性。能够根据申请注册PhraseId为ANY_PHRASE的PhaseListener在每一个环节后出示hook。假如PhaseId是ANY_PHASE,JSF完成便会在每一个环节以前和以后启用该PhaseListener。JSF架构中的完成略微不一样,由于能够压根沒有PhaseListener,可是在TemplateMethod方式中,子类一般再次界定父类中抽象性的可变性流程。

Observer方式

Observer方式的目地是当总体目标目标的情况更改时全自动通告全部依靠的目标(即观查器)。JSF在UI部件中完成了Observer方式。JSF有两大类內建恶性事件:ActionEvent和ValueChangedEvent。ActionEvent用以明确客户页面部件(如按键)的激话。当客户点击按键时,JSF完成通告加上到该按键上的一个或好几个姿势监视程序。因此该按键被激话,或是说按键(行为主体)的情况更改了。加上到按键上的全部监视程序(即观查器)都接到通告该行为主体情况早已更改。相近的,当键入UI部件中的值更改时,JSF完成通告ValueChangeListener。

完毕语

JSF架构运用了Singleton、Model-View-Controller、FactoryMethod、State、Composite、Decorator、Strategy、TemplateMethod和Observer设计方案方式。由于它的管理体系构造创建在早已认证的设计方案方式的基本上,它是一个健硕的架构,方式在JSF架构中获得了非常好的运用。

共享到:
文中"探寻JSF架构中应用的设计方案方式"由远航网站站长搜集梳理而成,仅作大伙儿学习培训与参照应用。大量网站建设实例教程尽在远航网站站长站。