代理,为其他对象提供了一种代理,以控制对该对象的访问。
其实,就是一种【间接】调用的关系。其他对象调用代理的方法,其实是代理中的被代理对象提供的方法。
实例如下:
package com.DesignPolicyLearn.Proxy;
/*
* author:Tammy Pi
* function:Person的抽象类
*/
public abstract class Person {
public abstract void speak();
}
真实的一个人:
package com.DesignPolicyLearn.Proxy;
/*
* author:Tammy Pi
* function:真实的Person
*/
public class RealPerson extends Person{
public void speak() {
System.out.println("俺说的话");
}
}
其实,代理就起到一个传话人的作用。代理其实是说的真实的人说的话。
package com.DesignPolicyLearn.Proxy;
/*
* author:Tammy Pi
* function:代理
*/
public class Proxy {
private Person realPerson;
public void speak() {
if(realPerson==null){
realPerson = new RealPerson();
}
realPerson.speak();
}
}