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

        ?

        Java設計模式在基于MVC模式系統(tǒng)中的應用研究

        2014-04-29 00:00:00楊新艷蘇愛玲
        計算機光盤軟件與應用 2014年13期

        摘 要:Java設計模式是對軟件系統(tǒng)設計中常見問題的可復用的經典解決方案。本文討論了兩種Java設計模式:工廠模式和代理模式。設計了一個使用JSP和Servlet技術實現(xiàn)的基于MVC模式的系統(tǒng)架構。并研究了這Java的兩種設計模式在該MVC模式系統(tǒng)中的應用。

        關鍵詞:工廠模式;代理模式;MVC模式

        中圖分類號:TP311.52

        1 Java設計模式

        程序的設計模式是開發(fā)人員在開發(fā)當中不斷積累,總結出來的一種可以重用的方案。設計模式建立了一系列描述如何完成軟件開發(fā)領域中特定任務的規(guī)則,設計模式識別并確定類和實例層次上或組件層次上的抽象關系[1]。Java一共有23種設計模式,在此我們討論兩種模式。

        1.1 工廠模式

        工廠模式顧名思義用來生產產品的模式。在Java語言中,要創(chuàng)建對象常見方法是用new關鍵字,工廠模式從面向對象思想出發(fā),把每次對象的創(chuàng)建看成是一個工廠生產一件產品,即把new類名()替換成工廠類調用生產產品的方法。它涉及到的角色有三種:(1)工廠類角色:是工廠模式的核心,有一定的邏輯。在Java中由具體類實現(xiàn);(2)抽象產品角色:是具體產品繼承的父類或實現(xiàn)的接口。在Java中由接口或抽象類實現(xiàn);(3)具體產品角色:工廠類所創(chuàng)建的對象就是此角色的實例。在Java中由具體類實現(xiàn)。

        1.2 代理模式

        代理模式指的就是一個角色代表另一個角色采取行動。在某些情況下,一個客戶不想或不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。靈活使用代理模式在實際應用中可以解決許多問題[2]。代理模式一般涉及到的角色有:(1)抽象角色:聲明真實對象和代理對象的共同接口;(2)代理角色:代理對象內部含有對真實對象的引用,從而可以操作真實對象,同時代理對象提供與真實對象相同的接口,在任何時刻都能代替真實對象;(3)真實角色:代理角色所代表的真實對象,是我們最終要引用的對象。

        代理模式又分靜態(tài)代理和動態(tài)代理,靜態(tài)代理中代理角色的一個接口只能服務于一種類型的類,動態(tài)代理不管真實角色如何變化,代理角色只需一個接口。Java在Java.lang.reflect包中提供了動態(tài)代理類,Java的動態(tài)代理可以勝任大規(guī)模程序。

        2 JSP+Servlet技術的MVC模式系統(tǒng)

        在JSP和Servlet技術實現(xiàn)的基于MVC模式的B/S系統(tǒng)中,M(Model,模型)由Java類實現(xiàn),V(View,視圖)由JSP實現(xiàn),C(Controller,控制器)由Servlet實現(xiàn)。以登錄功能為例說明MVC模式的系統(tǒng)實現(xiàn)。

        首先為登錄的用戶提供一個登錄界面login.jsp,用戶在登錄后,跳轉到LoginServlet中執(zhí)行返回成功或失敗信息。LoginServlet訪問業(yè)務層接口LoginService進行登錄流程的判斷,在該判斷過程中需要通過DAO(Data Access Object,數(shù)據訪問層)接口進行數(shù)據訪問。執(zhí)行過程如圖1所示。

        圖1 登錄執(zhí)行過程

        3 工廠模式的應用

        在上面設計的系統(tǒng)中,V層對C層的請求訪問可以通過JSP頁面的設計和web.xml的配置實現(xiàn),而C層對M層的訪問,以及在M層內部,業(yè)務邏輯類LoginService對LoginDAO的訪問都需要通過定義接口對象訪問。應用工廠模式實現(xiàn)接口對象訪問,首先創(chuàng)建抽象產品角色:數(shù)據訪問接口LoginDAO和業(yè)務邏輯接口LoginService;然后創(chuàng)建具體產品角色:也就是接口的實現(xiàn)類,分別為LoginDAOImpl和LoginServiceImpl,最后,定義工廠類角色:DAOFactory和ServiceFactory,在每次訪問接口時,都通過工廠類生產業(yè)務邏輯類對象和數(shù)據訪問DAO對象。

        工廠類中的方法定義為static,使用時可以直接用工廠類調用方法獲得實例對象。數(shù)據訪問類的工廠類DAOFactory具體實現(xiàn)代碼如下:

        public class DAOFactory{

        public static LoginDAO getLoginDAOInstance(Connection conn)

        {return new LoginDAOImpl(conn);}

        }

        其中Connection為數(shù)據庫連接類,將其對象做形參,可保證一次服務的數(shù)據增、刪、改、查只打開一次數(shù)據連接。

        4 動態(tài)代理模式的應用

        在軟件系統(tǒng)中經常會有一些功能,如日志、事務管理、安全檢查等是與系統(tǒng)本身的業(yè)務無關的。如果將這些功能加入到原有的程序代碼中會使業(yè)務邏輯變得復雜,這個時候就需要代理機制來實現(xiàn)。使用動態(tài)代理模式實現(xiàn)登錄方法調用前輸出提示信息的日志功能。首先,抽象角色為接口LoginService,有l(wèi)ogin方法完成登錄;具體角色為實現(xiàn)類LoginServiceImpl,調用LoginDAO完成登錄的業(yè)務邏輯。其次使用Java提供的InvocationHandler接口,完成代理角色及代理類的定義。關鍵代碼如下:

        public class LogHandler implements InvocationHandler{

        ……

        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable{

        System.out.println(\"輸出的提示信息\");

        method.invoke(sub, args);

        return 1;

        }

        }

        在代理類中,可任意增加與系統(tǒng)本身業(yè)務邏輯無關的任何代碼,在此,下劃線為日志功能代碼。代理模式相關類定義好后,在調用時需要首先使用工廠類創(chuàng)建業(yè)務層被代理對象lsi,再創(chuàng)建代理對象ls,關鍵代碼如下:

        Class cls= lsi.getClass();

        LoginService ls=(LoginService)

        Proxy.newProxyInstance (cls.getClassLoader(),cls.getInterfaces(),new LogHandler(lsi));

        ls.login();

        5 結束語

        本文討論了Java的工廠模式和代理模式在基于MVC系統(tǒng)中的具體應用,并以登錄功能為例,詳細說明了JSP和Servlet技術搭建的MVC軟件系統(tǒng)的執(zhí)行過程,以及兩種模式在登錄功能實現(xiàn)中的具體應用和關鍵代碼。Java的設計模式,是開發(fā)人員不斷積累經驗的成果,所以在系統(tǒng)開發(fā)中,合理使用設計模式,使代碼具有可重用性,且易于他人理解。

        參考文獻:

        [1]侯瑞春,高健,劉學義.JAVA設計模式在工作流管理系統(tǒng)中的應用研究[J].微計算機信息,2010.

        [2]丁民豆.代理模式的研究與使用[J].電腦知識與技術,2011.

        作者簡介:楊新艷(1982-),女,山東青島人,研究生,講師,研究方向:計算機應用技術;蘇愛玲(1979-),女,山東青島人,研究生,講師,研究方向:計算機應用技術。

        作者單位:青島工學院,山東青島 266300

        基金項目:2013年山東省高??萍加媱澴曰I經費項目(項目編號:J13LN78)。

        久久精品国产亚洲av热九九热| 老师露出两个奶球让我吃奶头 | 一区二区三区乱码在线 | 欧洲| 亚洲丝袜美腿在线视频| 亚洲国产精品成人久久| 国产精品一区二区久久乐下载| 欧美极品美女| 在线无码免费看黄网站| 日本啪啪视频一区二区| 久久夜色精品国产噜噜噜亚洲av| 亚洲 小说区 图片区 都市| 777精品久无码人妻蜜桃| 欧美综合自拍亚洲综合图片区| 久久久久综合一本久道| 一区二区国产视频在线| 在线播放av不卡国产日韩| 毛片免费视频在线观看| 性饥渴艳妇性色生活片在线播放| 亚洲日韩成人无码不卡网站| 人妻av在线一区二区三区| 亚洲免费在线视频播放| 中国娇小与黑人巨大交| 97久久人人超碰超碰窝窝| 天躁夜夜躁狼狠躁| 欧洲熟妇色 欧美| 夜夜高潮夜夜爽夜夜爱爱一区| 日本韩国男男作爱gaywww| 伊人激情av一区二区三区| 97人妻碰免费视频| 丰满少妇一区二区三区专区| 亚洲写真成人午夜亚洲美女| 婷婷射精av这里只有精品| 欧美裸体xxxx极品少妇| 亚洲色欲久久久久综合网| 婷婷九月丁香| 又黄又爽又色又刺激的视频| 爆乳午夜福利视频精品| 久久夜色精品国产九色| 麻豆视频黄片在线免费观看| 女人被狂躁的高潮免费视频| 国产成人一区二区三区影院动漫 |