作用:为其他对象提供一种代理以控制对这个对象的访问,并可以附加多种用途。(在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 )
举例:科比打篮球,,科比打篮球厉害,但打篮球前需要签订合同,科比对合同不熟悉,并且打完篮球后的一些广告什么的,科比都不熟悉,所以需要一个经纪人来帮他处理“打篮球”前后的事情,这个经纪人就是代理对象。
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...
}
好处:可扩展,建立联系,面向接口