Java代理模式的示例詳解
定義
代理模式(Proxy Parttern) 為一個對象提供一個替身,來控制這個對象的訪問,即通過代理對象來訪問目標對象,這樣做的話好處是可以在目標對象實現(xiàn)的基礎上,進行額外的功能的擴展。
案例
需求
蘋果公司通過蘋果代理商來賣手機
方案:靜態(tài)代理模式
定義抽象接口類,該類在代理模式中扮演的是一個抽象功能的角色,該案例中就是把出售手機抽象為了一個接口
/**
* 售賣手機的接口(代理模式——抽象角色)
* @author:liyajie
* @createTime:2022/2/22 14:42
* @version:1.0
*/
public interface IPhone {
/**
* 出售手機
* @author: liyajie
* @date: 2022/2/22 14:44
* @param
* @return void
* @exception:
* @update:
* @updatePerson:
**/
void sellPhone();
}定義蘋果手機公司類,該類在代理模式中扮演的是一個目標角色,實現(xiàn)了IPhone接口,重寫出售手機的方法
/**
* 蘋果公司(代理模式——目標角色)
* @author:liyajie
* @createTime:2022/2/22 14:46
* @version:1.0
*/
public class TargetPhone implements IPhone {
@Override
public void sellPhone() {
System.out.println("蘋果公司正在出售手機");
}
}定義代理類,通過代理類進而調(diào)用目標類的出售手機的方法,并加上自己的擴展功能
/**
* 代理商(代理模式——代理角色)
* @author:liyajie
* @createTime:2022/2/22 14:50
* @version:1.0
*/
public class ProxyPhone implements IPhone {
private IPhone iPhone;
public ProxyPhone(IPhone iPhone){
this.iPhone = iPhone;
}
@Override
public void sellPhone() {
System.out.println("代理商正在循環(huán)播放廣告,賺取廣告商廣告費");
System.out.println("代理商正在推薦自己的電子周邊產(chǎn)品,賺取費用");
iPhone.sellPhone();
System.out.println("代理商正在賣出蘋果手機,賺取差價");
}
}代理商賺錢的奧秘盡在下圖紅框中,賣出了蘋果手機賺錢,賣出了其他東西賺錢,廣告費也賺錢

定義測試類
/**
* 測試類
* @author:liyajie
* @createTime:2022/2/22 14:55
* @version:1.0
*/
public class Test {
public static void main(String[] args) {
TargetPhone targetPhone = new TargetPhone();
ProxyPhone proxyPhone = new ProxyPhone(targetPhone);
proxyPhone.sellPhone();
}
}查看結(jié)果

總結(jié)
該方案采用了靜態(tài)代理的方式:
優(yōu)勢:可以在不改變目標對象功能的前提下,通過代理對象對目標對象功能進行擴展
劣勢:不利于程序的擴展,需要同時維護目標對象和代理對象,程序中會產(chǎn)生大量的代理類,維護成本高
到此這篇關于Java代理模式的示例詳解的文章就介紹到這了,更多相關Java代理模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring?EnableAsync注解異步執(zhí)行源碼解析
這篇文章主要為大家介紹了Spring?EnableAsync注解源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
一文解決springboot打包成jar文件無法正常運行的問題
這篇文章主要介紹了一文解決springboot打包成jar文件無法正常運行的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
java?使用BeanFactory實現(xiàn)service與dao層解耦合詳解
這篇文章主要介紹了java?使用BeanFactory實現(xiàn)service與dao層解耦合詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Java生成N個不重復的隨機數(shù)的三種方法總結(jié)
這篇文章主要為大家詳細介紹了三種Java生成N個不重復的隨機數(shù)的方法,文中的示例代碼講解詳細,具有一定的參考價值,有需要的可以了解下2023-10-10
Spring的BeanFactoryPostProcessor接口示例代碼詳解
這篇文章主要介紹了Spring的BeanFactoryPostProcessor接口,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
Java編程中使用XFire框架調(diào)用WebService程序接口
這篇文章主要介紹了Java編程中使用XFire調(diào)用WebService程序接口的方法,WebService是一種跨編程語言和跨操作系統(tǒng)平臺的遠程調(diào)用技術,需要的朋友可以參考下2015-12-12

