java设计模式----代理模式

代理模式使用了多态,主要是便于扩展,代理类和被代理类使用的是同一个接口。

代码演示,先创建一个接口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

主要好处在于,以后要添加新的被代理类不需要改动原来的代理类代码,只需要实现接口就行,解耦合。

原文地址:https://www.cnblogs.com/JAYIT/p/5007217.html