Java的三種代理模式簡述

成都創(chuàng)新互聯(lián)成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元門頭溝做網(wǎng)站,已為上家服務(wù),為門頭溝各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
本文著重講述三種代理模式在java代碼中如何寫出,為保證文章的針對性,暫且不討論底層實(shí)現(xiàn)原理,具體的原理將在下一篇文章中講述。
代理模式是什么
代理模式是一種設(shè)計(jì)模式,簡單說即是在不改變源碼的情況下,實(shí)現(xiàn)對目標(biāo)對象的功能擴(kuò)展。
比如有個(gè)歌手對象叫Singer,這個(gè)對象有一個(gè)唱歌方法叫sing()。
假如你希望,通過你的某種方式生產(chǎn)出來的歌手對象,在唱歌前后還要想觀眾問好和答謝,也即對目標(biāo)對象Singer的sing方法進(jìn)行功能擴(kuò)展。
但是往往你又不能直接對源代碼進(jìn)行修改,可能是你希望原來的對象還保持原來的樣子,又或許你提供的只是一個(gè)可插拔的插件,甚至你有可能都不知道你要對哪個(gè)目標(biāo)對象進(jìn)行擴(kuò)展。這時(shí)就需要用到j(luò)ava的代理模式了。網(wǎng)上好多用生活中的經(jīng)理人的例子來解釋“代理”,看似通俗易懂,但我覺得不適合程序員去理解。程序員應(yīng)該從代碼的本質(zhì)入手。
代理模式的作用是:為其他對象提供一種代理以控制對這個(gè)對象的訪問。在某些情況下,一個(gè)客戶不想或者不能直接引用另一個(gè)對象,而代理對象可以在客戶端和目標(biāo)對象之間起到中介的作用。
public interface Italk {
public void talk(String msg);
} public class People implements Italk {
public String username;
public String age;
public String getName() {
return username;
}
public void setName(String name) {
this.username= name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public People(String name1, String age1) {
this.username= name1;
this.age = age1;
}
public void talk(String msg) {
System.out.println(msg+!你好,我是+username+,我年齡是+age);
}
} public class TalkProxy implements Italk {
Italk talker;
public TalkProxy (Italk talker) {
//super();
this.talker=talker;
}
public void talk(String msg) {
talker.talk(msg);
}
public void talk(String msg,String singname) {
talker.talk(msg);
sing(singname);
}
private void sing(String singname){
System.out.println(唱歌:+singname);
}
}
} public class MyProxyTest {
/**代理模式
* @param args
*/
public static void main(String[] args) {
//不需要執(zhí)行額外方法的
Italk people1=new People(湖海散人,18);
people1.talk(No ProXY Test);
System.out.println(-----------------------------);
//需要執(zhí)行額外方法的
TalkProxy talker=new TalkProxy(people1);
talker.talk(ProXY Test,七里香);
}
}
名稱欄目:代理模式j(luò)ava代碼,java jdk代理
本文鏈接:http://chinadenli.net/article45/dsicsei.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)、服務(wù)器托管、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)