1、概念
就是一個人或者機構代表另一個人或者機構做事情。線程池使用的就是代理模式。
2、運用
代理模式一般涉及到的角色有:
抽象角色:聲明真實對象和代理對象的共同接口;
代理角色:代理對象角色內部含有真實對象的引用,從而可以操作真實對象,同時代理對象提供與真實對象相同的接口以便在任何時刻都能代替真實對象。
真實角色:代理角色所代表的真實對象,是最終要引用的對象。
如下:定義一個抽象角色,提供一個operation接口。
public abstract class AbstractObject {
//操作
public abstract void operation();
}
定義一個真是對象,實現類中的方法,也就是需要代理對象代理做事情的方法。
public class RealObject extends AbstractObject {
@Override
public void operation() {
//一些操作
System.out.println("一些操作");
}
}
定義代理對象,作爲真實對象的代理,代替真實對象做事情,本質還是真實對象在做事情,只不過是代理對象持有了真實對象的引用。
public class ProxyObject extends AbstractObject{
Object object = new RealObject();
@Override
public void operation() {
object.operation();
}
}
接着客戶端創建代理類的實例,有代理對象幫真實對象做事情。
public class ProxyObject extends AbstractObject{
Object object = new RealObject();
@Override
public void operation() {
object.operation();
}
}