代理设计模式分为静态代理和动态代理。
java代理设计模式(静态代理模式)
代理设计模式严格来讲就是两个子类共同实现一个接口,其中一个子类是要真实完成的任务,另外一个子类是负责辅助完成真实任务的类。
举例说明:若一个人想出去吃大餐,那么他的一个接口就是实现“吃”的动作,其中一个子类就是要完成吃这个真实的业务,另外一个类(例如是餐馆)就要负责辅助完成“吃”这个动作,实现核心目的。
通过图示理解:
代码示例:
interface ISubject{//接口,核心目的就是吃
public void eat();
}
class RealSubject implements ISubject{//真实实现了目的
public void eat() {
System.out.println("吃上饭了,不饿了!");
}
}
class ProxySubject implements ISubject{//代理实现
private ISubject subject;
public ProxySubject(ISubject subject) {
this.subject=subject;
}
public void prepare() {
System.out.println("穿衣服准备出门!");
}
public void restaurant() {
System.out.println("点餐!");
}
public void eat() {//接口子类一定要覆写抽象方法
this.prepare();
this.restaurant();
this.subject.eat();//真实的业务
}
}
class Factory{
public static ISubject getInstance() {
return new ProxySubject(new RealSubject());
}
}
public class ProxyDemo {
public static void main(String[] args) {
ISubject sub=Factory.getInstance();
sub.eat();
}
}
运行结果:
穿衣服准备出门!
点餐!
吃上饭了,不饿了!
(如有错误和不足,欢迎批评指正!)