精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

探討JSF框架中使用的設計模式

開發 后端
本文探討了JSF框架中使用的設計模式。詳細討論的設計模式包括 Singleton、Model-View-Controller、Factory Method、State、Composite、Decorator、Strategy、Template Method 和 Observer 模式。

首先簡要地介紹一下模式和JSF框架。

模式。設計模式是對問題和解決方案進行抽象的普遍適用的方法。因為模式是所有開發人員和架構師公認的,所以模式可以節約時間和資源。用外行話來說,模式就是關于某個人所共知的問題的經過驗證的解決方案。模式可以重用,重用使得解決方案更健壯。

Java Server Faces。 JSF 體系結構是一種 Web 應用程序框架。它是 Java Community Process (JCP) 推動的,有望成為 Web 應用程序開發的標準框架。目前用于開發 Web 應用程序的框架有 50 多個,這說明迫切需要實現框架的標準化,這正是 JSF框架的目標!

深入剖析 JSF 模式

現在我們來討論 JSF 體系結構中的各種設計模式。本文將詳細討論 Singleton、Model-View-Controller、Factory Method、State、Composite、Decorator、Strategy、Template Method 和 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 來編寫專門的業務邏輯代碼。

Factory Method 模式

Factory Method 模式的目的是定義一個用于創建對象的接口,但是把對象實例化推遲到子類中。在 JSF 體系結構中,Factory Method 模式被用于創建對象。LifeCycleFactory 是一個創建和返回 LifeCycle 實例的工廠對象。LifeCycleFactory 的 getLifeCycle (String LifeCycleId) 方法采用 Factory Method 模式,根據 LifeCycleId 創建(如果需要)并返回 LifeCycle 實例。自定義的 JSF 實現可以重新定義 getLifeCycle 抽象方法來創建自定義的 LifeCycle 實例。默認的 JSF 實現提供默認的 LifeCycle 實例。此外,對于每個 JSF 請求,FacesServlet 都從 FacesContextFactory 得到 FacesContext。FacesContextFactory 是一個抽象類,公開了 getFacesContext API,JSF 實現提供了 FacesContextFactory 和 getFacesContext API 的具體實現。這是另外一個使用 Factory Method 模式的例子,具體的 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 就會跳過剩下的階段而直接進入 Render Response 階段。如果這兩個標志都沒有設置,LifeCycle 就會按順序繼續執行下一步。

Composite 模式

Composite 模式讓客戶代碼能夠統一處理復合對象和基本對象。復合對象是基本對象的容器。在***階段(Restore View 階段)和***一個階段(Render Response 階段),使用 JSF UI 組件構造 UI View。UIComponentBase 就是 Composite 模式中 Component 抽象類的一個例子。UIViewRoot 是 Composite 類,而 UIOutput(比方說)就是葉子(或者基本類)。UIComponentBase 類定義了葉子和復合對象的公共方法,如編碼/解碼值和子節點管理函數。子節點管理函數,如 getChildren,對于葉子節點返回空列表,對于復合節點則返回其子節點。

Decorator 模式

Decorator 模式的目的是不通過子類化動態擴展對象的行為。JSF框架有很多擴展點(即可插入機制)。JSF 實現可使用 Decorator 模式替換默認的 PropertyResolver、VariableResolver、ActionListener、NavigationHandler、 ViewHandler 或 StateManager。通常自定義實現接受通過構造函數傳遞給它的默認實現的引用。自定義實現僅僅改寫功能的一個子集,而將其他功能委托給默認實現。如果希望實現自定義的 ViewHandler,改寫默認 ViewHandler 實現的 calculateLocale 方法

Strategy 模式

Strategy 模式的目的是封裝不同的概念。JSF框架采用 Strategy 模式使用委托實現模型呈現 UI 組件。JSF 技術支持兩種呈現模型。在直接實現模型中,UI 組件對收到的請求中的數據進行解碼,然后編碼這些數據進行顯示。在委托實現模型中,解碼和編碼操作委托給和組建關聯的專門呈現器。后一種模型利用了 Strategy 設計模式,比直接實現更靈活。在 Strategy 模式中,將不同的算法封裝在單獨的對象中,從而可以動態地改變算法。JSF 實現可以用已有的 renderkit 實例注冊另外的呈現器,當應用程序啟動的時候,JSF 實現讀取配置文件將這些呈現器和 UI 組件聯系在一起。

Template Method 模式

Template Method 模式的目的是將變化的步驟推遲到子類中,而在父類中定義那些固定的算法步驟。JSF框架通過 PhraseListeners 展現了 Template Method 模式提供的功能。采用 Template Method(或者 “hook”)使得 Web 作者可以為不同階段之間的可選步驟提供實現,而主要階段仍然和 JSF框架的定義一致。JSF框架提供了 PhaseListeners,概念上類似于 Template Method 模式中的可變步驟。JSF框架有六個預定義的階段,在每個階段之間,Web 作者可以實現 PhaseListeners 來提供類似于 Template Method hook 的 hook。事實上,這種結構比 Template Method 模式更具有擴展性。可以通過注冊 PhraseId 為 ANY_PHRASE 的 PhaseListener 在每個階段后提供 hook。如果 PhaseId 是 ANY_PHASE,JSF 實現就會在每個階段之前和之后調用該 PhaseListener。JSF框架中的實現略有不同,因為可以根本沒有 PhaseListener,但是在 Template Method 模式中,子類通常重新定義父類中抽象的可變步驟。

Observer 模式

Observer 模式的目的是當目標對象的狀態改變時自動通知所有依賴的對象(即觀察器)。JSF 在 UI 組件中實現了 Observer 模式。JSF 有兩類內建事件:ActionEvent 和 ValueChangedEvent。ActionEvent 用于確定用戶界面組件(如按鈕)的激活。當用戶單擊按鈕時,JSF 實現通知添加到該按鈕上的一個或多個動作監聽程序。于是該按鈕被激活,或者說按鈕(主體)的狀態改變了。添加到按鈕上的所有監聽程序(即觀察器)都收到通知該主體狀態已經改變。類似的,當輸入 UI 組件中的值改變時,JSF 實現通知 ValueChangeListener。

結束語

JSF框架利用了 Singleton、Model-View-Controller、Factory Method、State、Composite、Decorator、Strategy、Template Method 和 Observer 設計模式。因為它的體系結構建立在已經驗證的設計模式的基礎上,這是一個健壯的框架,模式在 JSF框架中得到了很好的利用。

【編輯推薦】

  1. JSF組件模型開發指南
  2. Seam與JSF的加減法
  3. JSF圖形組件管理圖形bean組件
  4. 開發自定義JSF組件
  5. JSF和Tapestry全面比較
責任編輯:佚名 來源: JavaEye
相關推薦

2009-06-22 16:24:33

JSF框架中使用的設計

2009-06-24 17:34:58

使用JSF的經驗

2009-06-23 11:35:44

JSF的Naviati

2018-05-24 11:38:17

2009-06-26 14:06:08

JSF基礎框架

2009-06-23 15:51:00

JSF框架

2009-06-22 15:52:15

JSF測試框架

2024-12-03 08:00:00

2010-01-18 09:37:39

JSF 2.0Java EE 6

2025-05-09 09:05:00

Spring框架設計模式

2023-07-03 07:39:43

Spring框架設計模式

2009-06-26 13:48:57

G4JSFGWTJSF

2009-06-26 17:36:10

FaceletsJSF

2012-02-24 15:25:45

ibmdw

2009-06-23 17:38:57

ExternalConJSF

2009-06-24 13:06:41

JSF組件Facelets

2010-08-02 16:19:00

ibmdw面向對象

2017-04-05 13:17:26

LinuxShellvi

2009-07-03 14:46:42

JSP開發框架JSFTapestry

2009-06-22 16:34:30

框架架構設計模式
點贊
收藏

51CTO技術棧公眾號

亚洲精品18p| xxxx欧美18另类的高清| 欧美孕妇毛茸茸xxxx| 亚洲图色中文字幕| 伦理片一区二区三区| 97久久综合精品久久久综合| 日本v片在线高清不卡在线观看| 精品日产卡一卡二卡麻豆| 亚洲成人自拍视频| 不卡av电影在线| 中文有码一区| 色综合一个色综合| 欧美福利精品| 无码人妻精品一区二区三区蜜桃91| 久久理论电影| 欧美日韩亚洲综合在线| 婷婷五月色综合| www.av88| 97精品国产一区二区三区| 精品久久久久久无| 五月激情婷婷在线| 免费黄网站在线| 久久99日本精品| 久久午夜a级毛片| 少妇性l交大片7724com| 福利在线视频网站| 国产成人精品亚洲日本在线桃色| 久久影视电视剧免费网站| 无码人妻aⅴ一区二区三区| 在线免费av资源| 国产午夜精品福利| 国产精品视频久| 免费成人深夜夜行网站| 日韩精品视频中文字幕| 亚洲午夜影视影院在线观看| 国产精品一区免费观看| 看片网址国产福利av中文字幕| 偷拍自拍一区| 91成人免费在线视频| 亚洲欧洲久久| 触手亚洲一区二区三区| 久久国产生活片100| 久久久国产精品免费| 中文字幕在线观看91| 天堂av中文在线观看| 亚洲综合在线五月| 欧美日韩亚洲在线| 五月婷婷六月色| 麻豆91小视频| 国产精品久久久亚洲| 天天做天天爱夜夜爽| 亚洲黄色毛片| 国产一区二区三区久久精品 | 色乱码一区二区三区88| 欧美日韩高清在线一区| 亚洲三区在线播放| 99re视频这里只有精品| 国产成人精品一区二区| 国产在视频线精品视频| 成人另类视频| 欧美videossexotv100| 国产chinesehd精品露脸| 九色porny视频在线观看| 国产婷婷一区二区| 日韩中文一区| 色婷婷av一区二区三区之e本道| 亚洲免费激情| 久久色精品视频| 国产精品嫩草影院俄罗斯| 国产精品色呦| 欧美美女直播网站| 爱福利视频一区二区| 中文字幕中文字幕在线十八区| 99re视频精品| 久久久久久久久久码影片| 国产毛片久久久久| 亚洲男人影院| 欧美精品一二区| 波多野在线播放| 久久激情av| 日韩一区二区高清| 狠狠躁狠狠躁视频专区| 91福利在线尤物| 亚洲精品国产第一综合99久久| 日韩中文字幕一区二区| 日本韩国在线视频爽| 国产亚洲精久久久久久| 一本一道久久久a久久久精品91| 日韩在线视频免费| 韩国三级中文字幕hd久久精品| 日韩av手机在线观看| 日韩av电影网| 亚洲老妇激情| 日韩有码在线视频| 成人免费看片98| 欧美精品首页| 九色精品美女在线| 91嫩草|国产丨精品入口| 日韩在线中文| 中文字幕成人在线| 亚洲一二三精品| 国精一区二区| 亚洲一区av在线播放| 182在线观看视频| 香蕉亚洲视频| 91久色国产| 亚洲国产综合一区| 中文字幕成人av| 日本欧洲国产一区二区| 国产原创av在线| 国产亚洲一区二区三区| 久久久久久av无码免费网站下载| 亚洲成人三级| 欧美日韩亚洲激情| 久久久久久久久久久久久国产精品| 国产成人精品一区二区三区视频| 欧美午夜视频网站| 黄大色黄女片18第一次| 欧美性aaa| 69成人精品免费视频| 五月婷婷六月丁香激情| 少妇一区二区三区| 欧美日韩999| 在线免费看毛片| 激情五月播播久久久精品| 久久av一区二区| 免费男女羞羞的视频网站在线观看| 亚洲一区在线视频观看| 亚洲欧美日本一区二区三区| 精品在线手机视频| 视频直播国产精品| 九九热只有精品| 日韩视频不卡| 国产高清在线一区二区| 六十路在线观看| 午夜视频久久久久久| 中文字幕无码不卡免费视频| 欧美天堂一区| 精品国产伦一区二区三区观看体验| 久久久久9999| 91久久夜色精品国产按摩| 日韩免费观看高清| 青春有你2免费观看完整版在线播放高清 | 精品日本12videosex| 中文字幕亚洲欧美一区二区三区 | 欧美精品777| 性色国产成人久久久精品 | 伊人成色综合网| 日韩高清中文字幕一区二区| 欧美日韩视频在线第一区 | 亚洲成人精品在线播放| 中文在线播放一区二区| 亚洲在线免费看| 日本美女一级视频| 午夜精品久久久久久久蜜桃app| 国产精品一级无码| 亚洲精品男同| 免费国产一区二区| 永久免费av在线| 欧美日韩国产123区| 免费的av网站| 欧美一级视频| 亚洲春色在线| 国产精品国产三级在线观看| 亚洲精品国精品久久99热| av资源在线免费观看| 美女在线观看视频一区二区| 精品乱色一区二区中文字幕| 久久日韩视频| 欧美在线免费视屏| 国产精品suv一区二区88| 国产乱码一区二区三区| 性欧美.com| 国产精品亚洲欧美日韩一区在线| 久久国产色av| 西西人体44www大胆无码| 欧洲日韩一区二区三区| 午夜精品福利在线视频| 成人福利视频网站| 欧美做暖暖视频| 你懂的在线观看一区二区| 米奇精品一区二区三区在线观看| 丁香六月色婷婷| 自拍偷拍亚洲激情| 久久综合伊人77777麻豆最新章节| 久久动漫网址| 国产热re99久久6国产精品| 六十路在线观看| 欧美一级在线免费| 希岛爱理中文字幕| 91亚洲精品乱码久久久久久蜜桃| 欧美一级特黄a| 黄色欧美日韩| 成人三级视频在线观看一区二区| 全亚洲第一av番号网站| 欧美成人午夜激情视频| 巨骚激情综合| 精品久久久久香蕉网| 中文字幕第31页| 中文字幕 久热精品 视频在线| 亚洲色图偷拍视频| 国产精品五区| 欧美日本国产精品| 99精品视频在线免费播放| 久久久精品在线| 可以在线观看的黄色| 精品国产人成亚洲区| 日本妇乱大交xxxxx| 亚洲va欧美va人人爽| 亚洲女人久久久| 久久久一区二区三区| 动漫av网站免费观看| 亚洲小说图片视频| 成人免费看片网址| av国产精品| 国产精品伦子伦免费视频| аⅴ资源天堂资源库在线| 亚洲精品720p| av中文字幕在线免费观看| 一区二区三区四区在线播放| 国产成人一区二区在线观看| 老汉av免费一区二区三区| 无码人妻精品一区二区三区在线 | 最近2019中文字幕大全第二页| 亚洲欧美丝袜中文综合| 日韩欧美色电影| 国产精品第九页| 91一区二区三区在线观看| 国偷自产av一区二区三区麻豆| 久久99国产精品免费| 午夜精品在线免费观看| 日日嗨av一区二区三区四区| 91香蕉视频网址| 老司机凹凸av亚洲导航| eeuss一区二区三区| 中文日产幕无线码一区二区| 国产一区二区日韩精品欧美精品| 四虎在线免费观看| 欧美天天综合网| 日批视频免费在线观看| 欧美性猛交xxxx乱大交极品| 国产又粗又猛又爽又黄的视频小说| 久久久久久亚洲综合| www.自拍偷拍| 国产自产高清不卡| 久久精品免费一区二区| 国产精品亚洲综合久久| 波多野结衣家庭教师在线| 亚洲免费成人| 国产极品美女高潮无套久久久| 亚洲综合社区| www.涩涩涩| 日韩极品在线观看| 日本中文字幕精品—区二区| 精品一区二区三区香蕉蜜桃| 制服丝袜中文字幕第一页| 韩国一区二区三区| 中文字幕第九页| 99re66热这里只有精品3直播 | 亚洲精品20p| 国产精品综合二区| 影音先锋人妻啪啪av资源网站| 26uuu亚洲综合色欧美| www.成人黄色| 国产精品乱看| 少妇高清精品毛片在线视频| 琪琪一区二区三区| 九九久久久久久| 粉嫩av一区二区三区| 久草福利视频在线| 狠狠色丁香九九婷婷综合五月| 亚洲成人av免费观看| 久久激情网站| 国产免费黄色小视频| 在线免费观看日本欧美爱情大片| 日韩国产小视频| 亚洲免费二区| 欧美网站免费观看| 麻豆精品久久精品色综合| wwwww在线观看| 久久久美女毛片| 中文字幕亚洲欧美日韩| 午夜国产精品一区| 在线观看视频二区| 精品国产免费久久| 9191在线| 色妞一区二区三区| 成年网站在线视频网站| 欧美成人精品激情在线观看| h片在线观看视频免费免费| 国产精品扒开腿做爽爽爽男男| 黄色激情在线播放| 国产精品入口免费视| 哺乳挤奶一区二区三区免费看| 美日韩免费视频| 亚洲精品888| 99精品一级欧美片免费播放| 国产精品久久久久久麻豆一区软件 | 波多野结衣一本一道| 精品欧美激情精品一区| 91久久国语露脸精品国产高跟| 欧美丝袜自拍制服另类| 国产1区在线观看| 在线日韩日本国产亚洲| jizz在线免费观看| 欧美高清在线观看| heyzo在线播放| 91精品中文在线| 不卡的国产精品| 牛人盗摄一区二区三区视频| 欧美一区高清| 999一区二区三区| 美腿丝袜亚洲色图| 国产成人精品无码免费看夜聊软件| 亚洲精品一二三区| 国产乡下妇女做爰毛片| 欧美精品日韩一区| 国产视频网站在线| 日日噜噜噜夜夜爽亚洲精品| 日本在线啊啊| 国产欧美日本在线| 怕怕欧美视频免费大全| www.射射射| 久久亚洲图片| 日韩成人精品视频在线观看| 国产夜色精品一区二区av| 日韩xxx高潮hd| 日韩欧美一级片| 成人短视频在线| 成人一区二区电影| 国产精品对白久久久久粗| 最新av在线免费观看| 麻豆精品在线播放| www中文在线| 欧美性猛交xxxx乱大交退制版 | 欧美老妇交乱视频| 国产精久久久| 日本福利视频导航| 精品一区二区在线免费观看| 自拍偷拍第9页| 91.com视频| 国产丝袜在线| 亚洲最大福利视频网站| 午夜精品久久| 少妇伦子伦精品无吗| 亚洲国产成人高清精品| 久久久精品毛片| 亚洲少妇中文在线| av免费在线观看网站| 91中文在线视频| 欧美大片一区| 扒开伸进免费视频| 亚洲国产精品av| 亚洲熟女乱色一区二区三区久久久| 在线精品视频视频中文字幕| 国产精品.xx视频.xxtv| 在线精品亚洲一区二区| 一本久道综合久久精品| 成人精品在线观看视频| 在线观看欧美日本| 日本高清视频在线播放| 99久久国产免费免费| 亚洲精品1区| 男人舔女人下部高潮全视频 | 黄色av免费观看| 91国内精品久久| 国产精品一站二站| 成人小视频在线观看免费| 99re视频精品| 在线观看视频中文字幕| 久久国产精彩视频| 久久九九热re6这里有精品| 爱福利视频一区二区| 中文字幕人成不卡一区| 亚洲成人777777| 秋霞av国产精品一区| 国产乱论精品| 人妻有码中文字幕| 国产精品久久777777| 精品免费囯产一区二区三区| 精品免费99久久| 原纱央莉成人av片| 男女啪啪的视频| 97精品久久久午夜一区二区三区 | 欧美国产日韩电影| 狼狼综合久久久久综合网| 秋霞影院一区二区| 国产一级在线视频| 在线成人中文字幕| 国产区精品视频在线观看豆花| 黄色一级免费大片| 亚洲国产精品精华液2区45| 99视频在线观看免费| 欧美综合国产精品久久丁香| 外国成人免费视频| 亚洲av无码一区二区二三区| 日韩一区二区中文字幕| √最新版天堂资源网在线| 中文字幕中文字幕99 | 久久99精品国产99久久|