代理模式使用了多态,主要是便于扩展,代理类和被代理类使用的是同一个接口。
代码演示,先创建一个接口Women。
Women.java
package proxy;
public interface Women {
public void eat();
public void paly();
}
创建两个要被代理的类,实现Women接口。
Juli.java
package proxy;
public class Juli implements Women{
@Override
public void eat() {
System.out.println("i'm Juli,i love eat banana");
}
@Override
public void paly() {
System.out.println("i'm Juli,i love swimming");
}
}
Lily.java
package proxy;
public class Lily implements Women{
@Override
public void eat() {
System.out.println("i'm Lily,i love eat apple");
}
@Override
public void paly() {
System.out.println("i'm Lily, i love play football");
}
}
创建一个代理类Proxy:
proxy.java
package proxy;
public class Proxy implements Women {
private Women women;
public Proxy() {
this.women = new Lily();//默认是Lily
}
public Proxy(Women women){
this.women=women;
}
@Override
public void eat() {
this.women.eat();
}
@Override
public void paly() {
this.women.paly();
}
}
Test:
package proxy;
public class Test {
public static void main(String[] args) {
Proxy p;
p=new Proxy();
p.eat();
p.paly();
Juli j=new Juli();
p=new Proxy(j);
j.eat();
j.paly();
}
}
测试结果:
i'm Lily,i love eat apple i'm Lily, i love play football i'm Juli,i love eat banana i'm Juli,i love swimming
主要好处在于,以后要添加新的被代理类不需要改动原来的代理类代码,只需要实现接口就行,解耦合。