Java設(shè)計模式之靜態(tài)代理模式實例分析
本文實例講述了Java設(shè)計模式之靜態(tài)代理模式。分享給大家供大家參考,具體如下:
代理模式,可以通過代理可以在原來的基礎(chǔ)上附加一些其他的操作。靜態(tài)代理模式相對比較簡單無需再程序運行時動態(tài)的進(jìn)行代理。
靜態(tài)代理模式的角色:
① 抽象角色:真實對象和代理對象的共同接口。其中聲明真實對象和代理對象需要做的事。
② 真實角色:實現(xiàn)抽象角色,定義真實角色所要實現(xiàn)的業(yè)務(wù)邏輯,供代理角色調(diào)用。
③ 代理角色:實現(xiàn)抽象角色,是真實角色的代理,通過真實角色的業(yè)務(wù)邏輯方法來實現(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相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
基于java TCP網(wǎng)絡(luò)通信的實例詳解
本篇文章是對java中TCP網(wǎng)絡(luò)通信的實例進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
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報錯問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-11-11
解決maven項目tomcat啟動失敗war exploded:Error during
在SpringMVC項目中,使用war和warexploded兩種部署方式可能會導(dǎo)致不同的路徑問題,從而出現(xiàn)404錯誤,war模式將項目打包上傳,而warexploded模式則保持文件夾結(jié)構(gòu)上傳,開發(fā)時建議使用warexploded模式,方便利用Update classes and resources功能自動更新2024-10-10
SpringBoot+Thymeleaf+ECharts實現(xiàn)大數(shù)據(jù)可視化(基礎(chǔ)篇)
本文主要介紹了SpringBoot+Thymeleaf+ECharts實現(xiàn)大數(shù)據(jù)可視化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2022-06-06

