Java設計模式之靜態(tài)代理模式實例分析
本文實例講述了Java設計模式之靜態(tài)代理模式。分享給大家供大家參考,具體如下:
代理模式,可以通過代理可以在原來的基礎上附加一些其他的操作。靜態(tài)代理模式相對比較簡單無需再程序運行時動態(tài)的進行代理。
靜態(tài)代理模式的角色:
① 抽象角色:真實對象和代理對象的共同接口。其中聲明真實對象和代理對象需要做的事。
② 真實角色:實現(xiàn)抽象角色,定義真實角色所要實現(xiàn)的業(yè)務邏輯,供代理角色調(diào)用。
③ 代理角色:實現(xiàn)抽象角色,是真實角色的代理,通過真實角色的業(yè)務邏輯方法來實現(xiàn)抽象方法,并可以附加自己的操作。
下面提供一個簡單的靜待代理的示例代碼:
1. 抽象角色:真實對象和代理對象的共同接口。其中聲明真實對象和代理對象需要做的事。
package com.tydic.proxy; /** * 真實角色和代理角色的共同接口 * @author Administrator * */ public abstract class Subject { //真實對象和代理對象需要做的事 public abstract void request(); }
2. 真實角色:需要實現(xiàn)抽象角色,是被代理的對象。
package com.tydic.proxy; /** * 真實角色 * @author Administrator * */ public class RealSubject extends Subject { @Override public void request() { System.out.println("from real subject!"); } }
3. 代理角色:實現(xiàn)抽象角色,并持有一個真實角色的引用。
package com.tydic.proxy; /** * 代理角色 * @author Administrator * */ public class ProxySubject extends Subject { private RealSubject realSubject;//代理角色內(nèi)部引用了真實角色 @Override public void request() { this.preRequest();//在真實對象操作之前所附加的操作 if(null == realSubject){ realSubject = new RealSubject(); } realSubject.request();//真實角色完成的事情 this.postRequest();//在真實對象操作之后附加的操作 } private void preRequest(){ System.out.println("pre request!"); } private void postRequest(){ System.out.println("post request!"); } }
4. 編寫客戶端代碼
package com.tydic.proxy; public class Client { public static void main(String[] args) { Subject subject = new ProxySubject(); subject.request(); } }
更多java相關內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O計入門與進階教程》、《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
SpringBoot實現(xiàn)在webapp下直接訪問html,jsp
這篇文章主要介紹了SpringBoot實現(xiàn)在webapp下直接訪問html,jsp問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10解決安裝mysqlclient的時候出現(xiàn)Microsoft Visual C++ 14.0 is required報錯
這篇文章主要介紹了解決安裝mysqlclient的時候出現(xiàn)Microsoft Visual C++ 14.0 is required報錯問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-11-11解決maven項目tomcat啟動失敗war exploded:Error during
在SpringMVC項目中,使用war和warexploded兩種部署方式可能會導致不同的路徑問題,從而出現(xiàn)404錯誤,war模式將項目打包上傳,而warexploded模式則保持文件夾結構上傳,開發(fā)時建議使用warexploded模式,方便利用Update classes and resources功能自動更新2024-10-10SpringBoot+Thymeleaf+ECharts實現(xiàn)大數(shù)據(jù)可視化(基礎篇)
本文主要介紹了SpringBoot+Thymeleaf+ECharts實現(xiàn)大數(shù)據(jù)可視化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧<BR>2022-06-06