作用:爲其他對象提供一種代理以控制對這個對象的訪問,並可以附加多種用途。(在某些情況下,一個客戶不想或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。 )
舉例:科比打籃球,,科比打籃球厲害,但打籃球前需要簽訂合同,科比對合同不熟悉,並且打完籃球后的一些廣告什麼的,科比都不熟悉,所以需要一個經紀人來幫他處理“打籃球”前後的事情,這個經紀人就是代理對象。
AOP:面向切面編程的核心就是代理機制。
//共用接口或抽象類
abstract class Subject{
public abstract void request();
}
//被代理對象
class RealSubject extends Subject{
@override
public void request(){
//do something...
}
}
//代理類
class Proxy extends Subject{
Subject rs;
//可擴展
@override
public void request(){
//do something...
if(rs == null){
rs = new RealSubject;
}
rs.reqeust();
//do something...
}
}
public static void main(String[] args){
Proxy p = new Proxy();
p.request();
//do something...
}
好處:可擴展,建立聯繫,面向接口