亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MVC設計模式應用問題探討

        2013-08-03 01:30:36王亞萍張紅霞
        山東工業(yè)技術 2013年15期
        關鍵詞:設計模式觀察者視圖

        王亞萍 張紅霞

        (河南農(nóng)業(yè)職業(yè)學院,河南 中牟451450)

        1 定義闡述

        MVC 設計模式: 是一種架構(gòu)型設計模式, 它本身不引入新的功能,只是指導我們把Web 應用結(jié)構(gòu)做的更加合理,實現(xiàn)邏輯與頁面相分離。

        功能型設計模式:如單例(保證類的實例唯一)、工廠(選擇實現(xiàn))、值對象(封裝數(shù)據(jù))、DAO(屏蔽變化)等等。

        架構(gòu)型設計模式:結(jié)構(gòu)性的設計模式,只是讓程序更具有結(jié)構(gòu)化。

        Java 中MVC 來源思路及進化過程:Servlet =Java + HTML 字符串,問題產(chǎn)生了,由于拼字符串太麻煩→解決方案:HTML 獨立出來從而得到→JSP≈HTML+Java 腳本(問題又產(chǎn)生了,能解決Servlet 問題,但是帶來了頁面和邏輯混雜)→解決方案:MVC(指導我們讓Web 應用程序結(jié)構(gòu)更加合理)。

        2 MVC 三部分內(nèi)容及各部分功能如下

        ①Model:VO+邏輯層:可以理解為后臺部分。

        功能:封裝應用狀態(tài)、響應狀態(tài)查詢、暴露應用功能。

        ②View:視圖層的三大功能,典型的如修改頁面,觸發(fā)事件而不處理,純jsp 自己處理,提交給Controller 處理。

        功能:產(chǎn)生HTML 響應、請求模型更新、提供HTML 表單用于用戶請求。

        對比: 純jsp 頁面中事件處理與頁面展示混雜在一起,MVC 中事件處理由Controller 承擔,從而達到邏輯與頁面相分離的效果。

        ③Controller:事件處理過程。

        功能:驗證HTML 請求的數(shù)據(jù)、將用戶數(shù)據(jù)與模型更新相映射、選擇用于響應的視圖。

        3 MVC 演化過程及示例

        View 用戶請求到控制器,控制器狀態(tài)改變通知Model,Model 主動通知View 說Model 自身已改變,View 主動去Model 里面去狀態(tài)查詢。

        下面先看個標準的MVC 單機版的示例:

        Eclipse 本身就是基于MVC 做的,例如當我們打開Eclipse 時修改編輯區(qū)的代碼時,左邊的Navigator 視圖和右邊的Outline 視圖等都會自動更新而隨著編輯區(qū)的代碼改變而改變。實際上這些窗口觀察的都是同一個Model,即觀察XX.java 代碼文件的內(nèi)容,這種多個View 觀察者觀察同一個Model 文件的在設計模式中也有個設計模式與其對應即觀察者設計模式。

        觀察者設計模式Java 代碼示例的如下:

        (1)根據(jù)前面的內(nèi)容抽象,首先必須有個被觀察的對象,即目標對象叫做MySubject.java:

        觀察者觀察的為目標對象的內(nèi)容Content, 當內(nèi)容改變了即有人setContent 需要通知所有的觀察者。

        (2)其次應該有些觀察者,叫做MyObserver:

        MyObserver 實現(xiàn)一個update 回調(diào)方法, 即MyObserver 去觀察MySubject,觀察到后采取的處理即這個update 方法。 這里的觀察者又有兩種模型,一種是被觀察者主動推過來的消息即推模型,另一種就是觀察者主動去拉內(nèi)容即拉模型。 其實觀察者模式也叫出版訂閱模式,推模型即訂報的意思,即報刊發(fā)行商將報紙送上門服務,拉模型即某個時刻大家主動去報刊亭買報的這種模型。

        (3)客戶端測試代碼,Client.java:

        首先創(chuàng)建一個目標對象,然后創(chuàng)建三個觀察者,然后注冊觀察者相當于訂報紙,然后報社出報紙即內(nèi)容改變時觸發(fā)觀察者,當被觀察的對象改變時需要通知觀察者也即對應MySubject.java。

        代碼輸出結(jié)果:

        wwu 推過來的====null

        wwu 主動去拉====觀察者模式

        lsi 推過來的====null

        lsi 主動去拉====觀察者模式

        當將Client.java 文件中的MyObserver ob2=new MyObserver("lsi");、和subject.addObserver(ob2);注釋掉時,輸出結(jié)果中間2 行隨之也不顯示出來,即所謂的lis 退訂。

        ③改進的版的MVC

        在Java WEB 開發(fā)中會產(chǎn)生一個問題: 就是為什么Model 會主動通知View 自身已經(jīng)改變了呢?因為Java 中標準的MVC 起源于Swing,這種標準的MVC 只能適應于單機版,在WEB 開發(fā)中無法實現(xiàn),因為WEB 是基于請求應答模式的環(huán)境,Model 不會在沒有請求的情況下直接通知View 自身的改變。

        在實際開發(fā)WEB 應用的時候, 由于無法按照標準的MVC 去實現(xiàn),通常我們會把邏輯部分轉(zhuǎn)移到邏輯層去實現(xiàn),所以Model 就退變成只用來封裝數(shù)據(jù),也就是我們常寫的VO;此時View 一般不直接和邏輯層交互,所有跟邏輯層的交互都由控制器來實現(xiàn),View 只和控制器交互。

        改進版后的MVC 一般實現(xiàn)方式:View 用JSP 來實現(xiàn),Controller由Servlet 來實現(xiàn),Model 由JavaBean 來實現(xiàn)。

        [1][美]Robert Lafore.計曉云,趙研,等譯.Java 數(shù)據(jù)結(jié)構(gòu)與算法[M].北京:中國電力出版社,2003.

        猜你喜歡
        設計模式觀察者視圖
        觀察者
        揚子江(2024年3期)2024-05-10 06:59:24
        仿生設計模式的創(chuàng)新應用探索
        玩具世界(2023年6期)2024-01-29 12:14:36
        “1+1”作業(yè)設計模式的實踐探索
        冷靜而又理性的觀察者——德國華人作家劉瑛訪談
        交通機電工程設計模式創(chuàng)新探討
        5.3 視圖與投影
        視圖
        Y—20重型運輸機多視圖
        SA2型76毫米車載高炮多視圖
        互動式設計模式研究
        久久精品99久久香蕉国产色戒| 亚洲国产一区二区中文字幕| 久久久久久久久无码精品亚洲日韩| 黑色丝袜秘书夹住巨龙摩擦| 波多野结衣绝顶大高潮| 亚洲国产一区二区a毛片| 无码 制服 丝袜 国产 另类| 加勒比东京热久久综合| 三区中文字幕在线观看| 99热爱久久99热爱九九热爱| 狠狠色狠狠色综合久久第一次| 精品亚洲不卡一区二区| 亚洲国产女性内射第一区二区| 麻豆╳╳╳乱女另类| 91精品国产综合成人| 久久综合给合久久97色| 精品人妻久久一区二区三区| 日韩av东京社区男人的天堂| 最新国产三级| 国产成人自拍视频在线观看网站 | 又污又爽又黄的网站| 精品国产一区二区三区香蕉| 国产日本精品一区二区免费| 亚洲av无码国产精品色午夜字幕| 久久精品成人欧美大片| 日韩国产自拍精品在线| 国产伦一区二区三区色一情| 欧美俄罗斯40老熟妇| 加勒比无码专区中文字幕| 亚洲av成人无网码天堂| 久久精品国产亚洲av无码偷窥| 色猫咪免费人成网站在线观看| 东京热无码人妻中文字幕| av网站大全免费在线观看| 国产精品无码久久久久久| 国产福利片无码区在线观看 | 国产亚洲成av人片在线观黄桃| 粗大的内捧猛烈进出在线视频| 国产一区二区三区色区| 巨爆中文字幕巨爆区爆乳| 国产香蕉尹人在线观看视频|