<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    常用鏈接

    統(tǒng)計

    最新評論

    Observer模式在J2EE中的實現(xiàn) [http://35java.com/zhibo/forum.php?mod=viewthread&tid=108&extra=page%3D3]

    引言:
                設(shè)計模式是經(jīng)驗的文檔化。它是對被用來在特定場景下解決一般設(shè)計問題的類和相互通信的對象的描述。更通俗的來說,它是一個問題/解決方案對。一旦我們掌握了設(shè)計模式,就等于擁有了一支強有力的專家隊伍。它甚至能夠使面向?qū)ο蟮男率掷们叭说慕?jīng)驗找出職責(zé)明確的類和對象,從而獲得優(yōu)雅的解決方案。由于設(shè)計模式也是重構(gòu)的目標(biāo),如果在設(shè)計的初期適當(dāng)?shù)匾朐O(shè)計模式,可以減少重構(gòu)的工作量。
          但是,我們也不能陷入模式的陷阱,為了使用模式而去套模式,那樣會陷入形式主義。我們在使用模式的時候,一定要注意模式的意圖(intent),而不要過多的去關(guān)注模式的實現(xiàn)細(xì)節(jié),因為這些實現(xiàn)細(xì)節(jié)在特定情況下,可能會發(fā)生一些改變。不要頑固地認(rèn)為設(shè)計模式一書中的類圖或?qū)崿F(xiàn)代碼就代表了模式本身。
          下面,我們來討論一下為什么要在分布式、多層系統(tǒng)中使用Observer模式。
          

    多層體系結(jié)構(gòu)(multi-tier architecture):
                三層體系結(jié)構(gòu)是多層體系結(jié)構(gòu)中最簡單的一種,它一般包括:
          
    • 表示層(presentation)-窗口、報表-
    • 業(yè)務(wù)邏輯層(business logic)-管理業(yè)務(wù)過程的任務(wù)和規(guī)則。它又可以細(xì)分為領(lǐng)域?qū)ο髮樱ù眍I(lǐng)域概念)和服務(wù)層(提供數(shù)據(jù)庫交互、安全性、打印報表)。
    • 存儲層(storage)-持久化存儲機制。如數(shù)據(jù)庫服務(wù)器等。
                  
    圖一:三層體系結(jié)構(gòu)
                  
          而Java 2平臺企業(yè)版(J2EE)是一種利用Java 2平臺來簡化諸多與多級企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復(fù)雜問題的體系結(jié)構(gòu)。它是開放的、基于標(biāo)準(zhǔn)的平臺,用以開發(fā)、部署和管理N層結(jié)構(gòu)、面向Web的,以服務(wù)器為中心的企業(yè)級應(yīng)用。
          為了支持領(lǐng)域?qū)ο蟮膹?fù)用,并且使領(lǐng)域?qū)ο蟮慕涌谧兏鶐淼挠绊懽钚』N覀儗㈩I(lǐng)域?qū)樱P停┖捅硎緦樱ㄒ晥D)相分離。
          采用模型-視圖模式的意義在于:
          
    • 支持聚合度更高的模型定義,使模型的定義可以集中在領(lǐng)域過程的定義,而不是圖形界面上。
    • 允許將模型和用戶界面并行開發(fā)。
    • 使用戶界面的需求變化對領(lǐng)域?qū)铀斐傻挠绊懽钚』?/li>
    • 允許建立與一個現(xiàn)有的領(lǐng)域?qū)訉ο笙噙B接的新視圖,同時不影響領(lǐng)域?qū)印?/li>
    • 允許一個模型同時有多個視圖,例如使用SVG和表格。
    • 允許模型層獨立于用戶界面層執(zhí)行。
          而這恰恰與Observer模式的意圖相吻合。因此我們有必要跨層來實現(xiàn)Observer模式。
          其實,在應(yīng)用中更多的是采用MVC框架來架構(gòu)整個企業(yè)應(yīng)用的。在MVC框架中,Model和View之間存在著依賴關(guān)系,是Observer模式的典型應(yīng)用。當(dāng)然MVC框架還包括其它模式如Composite模式和Strategy模式。在J2EE平臺中,我們可以把Web Tier(包括Jsp和servelet和JavaBean)看作是表示層,EJB Tier看作是領(lǐng)域?qū)印6鴆ontroller可能跨距Web Tier和 EJB Tier。
          在Java類庫中采用Java.util.Observable類和Java.util.Observer接口來實現(xiàn)Observer模式,它們在單個的Java VM.中運行的很好,但如果想在EJB中使用它們就會有一些問題。這正如我們引言中提到的,模式的具體實現(xiàn)在特定情況下,可能會發(fā)生一些改變。
          

    值傳遞還是遠(yuǎn)程引用傳遞?
                        值傳遞:        
    在Java RMI中要求所有的參數(shù)和返回類型是JAVA的基本類型或?qū)崿F(xiàn)Java.io.Serilizable的對象。串行化對象通過值傳遞(又名拷貝傳遞),而不是引用傳遞,這意味著在某一層中串行化對象的更并不自動影響到其它的對象。      
                  遠(yuǎn)程引用傳遞:        
    對于EJB對象而言,它由兩個接口(home接口和remote接口)和一個類組成。容器會根據(jù)ejb規(guī)范來生成實現(xiàn)上面兩個接口的類(我們分別稱為xxxEJBHome對象和xxxEjbObject對象)。在較多的容器的實現(xiàn)方案中,xxxEJBHome對象使用了factory模式來創(chuàng)建xxxEjbObject對象;xxxEjbObject對象則采用proxy模式,作為xxxBean的代理類。在生成以上兩個對象的同時,容器會從部署文件中讀取關(guān)于安全、事務(wù)、持久性等服務(wù)并在xxxEjbObject對象和xxxEJBHome對象中添加以上服務(wù)的代碼。而且xxxEJBHome對象和xxxEjbObject對象都是分布式對象,我們在此只討論xxxEjbObject對象。所謂分布式對象,從本質(zhì)上來講,分為3個部分:object server、skeleton、stub。其中object server和skeleton位于服務(wù)器端,而stub位于客戶端。Object server負(fù)責(zé)實現(xiàn)業(yè)務(wù)邏輯,skeleton負(fù)責(zé)marshal和unmarshal方法簽名。      
                  
    圖二:分布式對象
                  
          顯然,EJB的客戶(調(diào)用EJB的對象)可以是任何對象,包括EJB和一般的Java類甚至是用任何語言寫的corba客戶端。
          從EJB的客戶視角來看的話,我們只能看到一個home接口、一個remote接口(對于實體bean的話,還可以看見一個主鍵類,而bean類對客戶是不可見的)。但我們從上面的論述,我們可以知道,對于remote接口中地方法調(diào)用,實際上是多態(tài)地調(diào)用XXX_Stub類。即XXX_Stub對象對客戶具有可見性(但這種可見性是透明的,即客戶不知道這種可見性的存在)。由于,XXX_Stub對象和Object Server實現(xiàn)了相同的接口,并且Object server真正實現(xiàn)了業(yè)務(wù)邏輯。所以,當(dāng)在客戶端調(diào)用XXX_Stub對象的方法時候,XXX_Stub對象通過socket通信機制將方法簽名傳給XXX_Skeleton對象,XXX_Skeleton對象在去委托Object Server完成業(yè)務(wù)處理邏輯。因此,Object Server本身發(fā)生了改變。我們稱XXX_Stub對象是Object Server對象的遠(yuǎn)程引用,并認(rèn)為當(dāng)分布式對象作為參數(shù)傳遞的時候,是通過引用傳遞的(會產(chǎn)生副作用

    posted on 2011-02-13 19:24 九寶 閱讀(422) 評論(0)  編輯  收藏 所屬分類: JavaJava Study(JavaThinking4)

    主站蜘蛛池模板: 最近中文字幕无吗免费高清| 国产亚洲美日韩AV中文字幕无码成人| 亚洲AV无码男人的天堂| 亚洲Av无码国产情品久久| 国产一区二区三区免费观看在线 | 免费人妻av无码专区| 中文字幕一区二区免费| 亚洲国产成人精品无码区在线秒播 | 日韩在线看片免费人成视频播放 | 国产精品色午夜免费视频 | 亚洲av午夜成人片精品电影| 国内少妇偷人精品视频免费| 亚洲日韩一区二区一无码| 亚洲人成网7777777国产| 欧美最猛性xxxxx免费| 成人无码视频97免费| 亚洲综合精品第一页| 亚洲AV无码成人精品区天堂| 女人被免费视频网站| 野花香高清在线观看视频播放免费| 中文字幕无码亚洲欧洲日韩| 亚洲热妇无码AV在线播放| 久久电影网午夜鲁丝片免费| 日韩电影免费在线观看网站| 精品无码专区亚洲| 亚洲理论在线观看| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 免费大香伊蕉在人线国产 | 亚洲AV无码第一区二区三区| 免费国产在线观看老王影院| 最近中文字幕电影大全免费版 | 美女扒开屁股让男人桶爽免费| 亚洲综合久久久久久中文字幕| 激情97综合亚洲色婷婷五| 国产成人免费a在线资源| 桃子视频在线观看高清免费完整| 国产综合免费精品久久久| 羞羞漫画登录页面免费| 亚洲码欧美码一区二区三区| 亚洲成av人片不卡无码| 亚洲视频在线观看|