精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本视频一区二区不卡| 欧美中文字幕在线播放| yjizz视频| 日韩精品三区| 亚洲精品写真福利| 欧美极品jizzhd欧美| 一区二区日韩在线观看| 亚洲美女一区| 宅男66日本亚洲欧美视频| 丰满少妇中文字幕| 色8久久影院午夜场| 一区二区三区自拍| 日韩理论片在线观看| 亚洲国产www| 青青草91视频| 7777精品久久久久久| 在线免费看av网站| 国产精品一区二区三区av麻| 欧美一区二区三区婷婷月色| av天堂永久资源网| 日本在线观看大片免费视频| 久久久久国产一区二区三区四区 | 亚洲韩国在线| 神马一区二区三区| 国产一区二区三区免费看| 日本一区二区三区在线播放| 久草视频手机在线观看| 成人久久一区| 亚洲欧美第一页| 香蕉视频免费网站| 国产精品成人**免费视频| 91黄色免费看| 国产欧美在线一区| 成人在线黄色电影| 亚洲最新视频在线播放| 中文字幕一区二区三区精彩视频| 福利在线视频导航| 久久综合久久综合亚洲| 国产在线精品二区| 精品国产999久久久免费| 九一九一国产精品| 国产精品久久久久不卡| 精品黑人一区二区三区| 亚洲制服少妇| 日韩av三级在线观看| 日本三级网站在线观看| 欧美日一区二区在线观看 | 日本片在线观看| 亚洲视频免费在线| 国产精品无码乱伦| 久久精品视频观看| 国产精品福利一区| 一区二区三区在线观看www| 国产对白叫床清晰在线播放| 久久一夜天堂av一区二区三区| 国产综合第一页| 日本一卡二卡四卡精品| 久久新电视剧免费观看| 欧美一区二区在线| lutube成人福利在线观看| 国产免费观看久久| 综合色婷婷一区二区亚洲欧美国产| 在线观看h片| 亚洲柠檬福利资源导航| 91网站在线观看免费| 久操av在线| 精品欧美国产一区二区三区| 97xxxxx| 在线男人天堂| 在线观看日产精品| 8x8x成人免费视频| 视频在线观看免费影院欧美meiju| 欧美一区二区久久| 国产 xxxx| 精品久久精品| 久久精品国亚洲| 国产性生活网站| 免费亚洲一区| 国产日韩在线播放| 亚洲国产综合网| 久久综合久久鬼色中文字| 色综合666| 香蕉久久aⅴ一区二区三区| 亚洲18女电影在线观看| 日本www高清视频| 亚洲高清影院| 欧美精品一区二区三区蜜桃视频| 中文字幕一区二区人妻在线不卡| 免费看成人吃奶视频在线| 日韩视频―中文字幕| 欧美人妻一区二区| 欧美亚洲免费| 亚洲一区二区三区乱码aⅴ| 男人天堂av网| 国产精品夫妻自拍| 日本韩国欧美在线观看| 人人精品久久| 亚洲国产欧美一区| 欧美xxxooo| 99视频一区| 91精品国产综合久久久久久久久 | 26uuu国产一区二区三区| 视频一区二区在线| 大桥未久在线播放| 欧美日本乱大交xxxxx| youjizz.com日本| 99久久久久国产精品| 国语自产在线不卡| 国产男男gay体育生网站| 97精品国产露脸对白| 日韩视频在线免费播放| 欧美日韩精品免费观看视完整| 91精品国产色综合久久ai换脸 | 黑人精品一区二区| 一区二区中文视频| 无码人妻丰满熟妇区毛片18| 玖玖玖电影综合影院| 国产午夜精品视频免费不卡69堂| 久久精品国产亚洲av香蕉| 久久精品国产久精国产| 免费国产在线精品一区二区三区| av在线麻豆| 欧美高清视频一二三区 | 无码人妻一区二区三区在线视频| 精品视频99| 欧美一区三区三区高中清蜜桃| 99久久精品国产色欲| 国产精品少妇自拍| 美女喷白浆视频| 日韩系列在线| 91精品国产一区| 手机av在线免费观看| 亚洲综合一二区| 人妻激情偷乱视频一区二区三区| 色135综合网| 国产精品video| 青青草在线视频免费观看| 亚洲国产精品久久人人爱蜜臀| 久久久福利影院| 91高清一区| 91久久精品国产91性色| 麻豆视频在线免费观看| 欧美日韩免费不卡视频一区二区三区 | 成人av在线资源网| 久久av综合网| 美日韩黄色大片| 国语自产在线不卡| 手机福利在线| 在线影院国内精品| 黑人と日本人の交わりビデオ| 日韩av一区二区在线影视| 欧美日韩一区二区三区在线视频| 久久毛片亚洲| 中文字幕国产亚洲| 国产伦精品一区二区三区视频痴汉 | 色乱码一区二区三在线看| 精品免费av在线| 最新日韩中文字幕| 亚洲午夜激情视频| 亚洲欧美aⅴ...| xfplay5566色资源网站| 亚洲人妖在线| 清纯唯美一区二区三区| 国产极品嫩模在线观看91精品| 最近中文字幕日韩精品| 国产色片在线观看| 亚洲成人免费电影| 久久久久久久久久久久| 欧美aa在线视频| 最新精品视频| 老司机成人在线| 日本国产欧美一区二区三区| 成年人在线免费观看| 欧美乱妇20p| 国产精品6666| 日本一区二区视频在线观看| 91热视频在线观看| 悠悠资源网久久精品| 欧美一级爱爱| 国产美女精品视频免费播放软件| 国内精品中文字幕| 成人免费黄色网页| 欧美电视剧在线看免费| 亚洲第一在线播放| 最新中文字幕一区二区三区| 精品国产aⅴ一区二区三区东京热| 国产九九精品| 久久免费看毛片| 日韩电影不卡一区| 国产综合视频在线观看| 白浆视频在线观看| 日韩一区二区三区xxxx| 日本黄视频在线观看| 在线观看一区二区精品视频| 人妻人人澡人人添人人爽| wwwwww.欧美系列| 伊人五月天婷婷| 久久精品一区| 日韩欧美猛交xxxxx无码| 伊人久久大香线蕉av不卡| 亚洲精品女av网站| 日韩成人动漫| 国内精品视频久久| 麻豆系列在线观看| 国产亚洲精品一区二555| 丰满少妇在线观看bd| 欧美日韩一区二区三区在线看| 在线看成人av| 一区二区三区欧美日韩| 国产精品视频在| 久久亚洲影视婷婷| 国模大尺度视频| 精品亚洲欧美一区| 一区二区三区视频在线观看免费| 亚洲经典自拍| 乱熟女高潮一区二区在线| 色777狠狠狠综合伊人| 欧美一进一出视频| 另类图片第一页| http;//www.99re视频| 久久69成人| 国产精品私拍pans大尺度在线| xx欧美视频| 1769国产精品| а√天堂中文资源在线bt| 欧美成人免费全部| 免费成人黄色| 日韩有码在线视频| 午夜小视频在线| 一区二区三区国产在线观看| 青青视频在线观| 亚洲精品永久免费| 污视频软件在线观看| 337p日本欧洲亚洲大胆精品 | 国产在线视频精品一区| 亚洲一级片免费| 免费xxxx性欧美18vr| 国内自拍视频网| 免费在线一区观看| 天天爱天天操天天干| 日韩精品乱码免费| 国产wwwxx| 麻豆91在线看| 亚洲无在线观看| 国产一区二区在线视频| 国产三级精品三级在线| 国产一区二区中文字幕| 性一交一黄一片| 成人一二三区视频| 久久久午夜精品福利内容| 成人av片在线观看| 水蜜桃av无码| 久久蜜臀中文字幕| aaaaa一级片| 国产欧美一区二区三区网站 | 亚洲一区视频在线观看视频| 国产一级特黄毛片| 精品久久久在线观看| 无码人妻一区二区三区线| 在线免费不卡电影| 国产一区二区麻豆| 欧美不卡在线视频| 四季av日韩精品一区| 亚洲欧美资源在线| 午夜免费视频在线国产| 久久中文字幕在线| heyzo中文字幕在线| 欧美一二三视频| 日本精品在线一区| 亚洲自拍偷拍色片视频| 精品按摩偷拍| 手机成人在线| 红桃视频欧美| 东京热加勒比无码少妇| 久久精品国产999大香线蕉| 潘金莲一级淫片aaaaa| 99久久精品国产一区二区三区| 玖玖爱在线观看| 日韩一区日韩二区| 中日韩精品视频在线观看| 色综合久久久久综合体| 97精品人妻一区二区三区在线| 精品欧美一区二区三区精品久久| 日本中文字幕电影在线观看| 色天天综合狠狠色| 99热99re6国产在线播放| 国产成人综合av| 亚洲精品在线国产| 欧美午夜欧美| 欧美日一区二区三区在线观看国产免| 午夜精品久久久久久久无码| 另类小说欧美激情| 日本护士做爰视频| 亚洲欧洲日产国码二区| 中日韩黄色大片| 91精品国产综合久久精品图片 | 国产1区2区在线| 国产激情视频一区二区三区欧美| 亚洲精品成人无码熟妇在线| 樱花草国产18久久久久| 久久久黄色大片| 精品1区2区在线观看| 69xxxx欧美| 91av视频在线| 视频一区国产| 伊人久久大香线蕉午夜av| 国产亚洲一级| 欧美日韩一区二区区别是什么| 欧美韩国日本不卡| 久久亚洲精品国产| 精品黑人一区二区三区久久| 中文字幕日本在线观看| 日产日韩在线亚洲欧美| 51vv免费精品视频一区二区| 亚洲国产精品毛片| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲911精品成人18网站| 中文字幕一区二区三区视频| 欧美一区二区三区不卡视频| 亚洲第一国产精品| av毛片在线免费看| 成人激情免费在线| 日韩精品欧美激情一区二区| 日韩 欧美 高清| 久久一区二区三区四区| 国产主播在线观看| 欧美成人猛片aaaaaaa| 国产秀色在线www免费观看| 国产精品成熟老女人| 综合亚洲自拍| 亚洲精品无码久久久久久| 91一区二区在线| 日韩美女一级片| 精品粉嫩超白一线天av| 日本一本在线免费福利| 成人av免费看| 在线播放一区| 香港三日本8a三级少妇三级99| 亚洲一级在线观看| 刘亦菲久久免费一区二区| 久久男人av资源网站| 动漫av一区| 精品视频免费在线播放| 99热99精品| 精品成人av一区二区在线播放| 亚洲国产三级网| 黄色软件视频在线观看| 久久精品国产一区二区三区不卡| 国产视频亚洲| 日本少妇高潮喷水xxxxxxx| 日韩欧美在线观看| 国产精品久久久久久久龚玥菲 | 久久影院一区二区三区| 久久精品在线免费视频| 国产999精品久久久久久| 国产在线视频卡一卡二| 日韩国产高清视频在线| 欧美成人精品一区二区男人小说| 欧美一级日本a级v片| 麻豆国产精品官网| 欧美日韩精品在线观看视频| 精品国产一区二区国模嫣然| 成人免费网站观看| 性欧美大战久久久久久久免费观看| 免费精品99久久国产综合精品| 九九精品视频免费| 精品sm在线观看| 免费电影日韩网站| 一区视频二区视频| 不卡一区二区三区四区| 少妇太紧太爽又黄又硬又爽| 一区二区欧美在线| 亚洲成人偷拍| 久久久久狠狠高潮亚洲精品| 欧美国产日产图区| 精品人妻少妇嫩草av无码专区 | 国产欧美自拍| 日本大片免费看| 亚洲国产精品t66y| 亚洲第一免费视频| 国产成人精品一区| 你懂的一区二区| 中文字幕免费高清| 日韩免费看网站| 国产经典一区| 欧美不卡在线播放| 中文字幕一区二区三中文字幕| xxxx18国产| 国产精品亚洲精品| 亚洲欧洲视频| 五月综合色婷婷| 亚洲精品视频免费| 精品国产不卡一区二区| 日本精品www| 亚洲综合区在线| 成人综合影院| 久久国产精品久久| 国产麻豆成人精品| 一级片在线免费播放| 高清亚洲成在人网站天堂|