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

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

 

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

相关文章:

  • 2021-06-29
  • 2021-09-14
  • 2021-10-20
  • 2022-02-22
  • 2021-07-04
  • 2021-06-08
  • 2021-07-16
猜你喜欢
  • 2021-06-24
  • 2021-11-09
  • 2021-09-25
  • 2021-12-23
  • 2021-08-17
  • 2021-12-21
  • 2021-08-05
  • 2022-02-21
相关资源
相似解决方案