代理模式将对象使用者与对象用代理对象分开,代理类与具体执行的类实现同一个接口,调用者直接调用的是代理对象,代理对象再调用真正的实现。代理模式可以实现对目标对象的再次封装,添加其他操作(比如统计调用次数之类的),突破限制(调用者没权限访问目标对象,但可以访问代理对象). 接口
package com.pocketdigi.patterns.proxy;
public interface IPerson {
public void say();
}
package com.pocketdigi.patterns.proxy;
public class PersonImp implements IPerson{
String name;
int age;
public PersonImp(String name,int age)
{
this.name=name;
this.age=age;
}
@Override
public void say() {
System.out.println("My name is "+name+", I'm "+age+" years old");
}
}
package com.pocketdigi.patterns.proxy;
public class ProxyPerson implements IPerson {
IPerson stu;
public ProxyPerson(String name,int age)
{
stu=new PersonImp(name, age);
}
@Override
public void say() {
stu.say();
}
}
调用:
//代理模式
ProxyPerson p=new ProxyPerson("zhang",20);
p.say();