代理模式之浅谈

         最近学了下代理模式,在这里与大家分享一下,本人是初学者,如果有不足之处,请各位指出,并多加指点微笑

     代理模式结构图如下:

 

      

     代理模式的角色有:

——抽象角色:声明真实对象和代理对象的共同接口。

——代理角色:代理对象角色的内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象

                         相同的接口以便在任何时刻都能代替真实对象。同时代理对象可以在执行真实对象操作时,附加其他                      的操作,相当于对真实对象进行封装。(对应上图的Proxy)

——真实角色:代理角色所代表的真实对象,使我们最终要引用的对象。(对应上图的RealSubject)

 

下面的一小段代码,加入说明:

1.声明抽象角色和真实角色的共同接口PayInterface

 

public interface PayInterface
{
	public void payFor(String name, int money);

}




2.真实角色实现接口PayInterface

public class RealObject implements PayInterface
{
	public void payFor(String name, int money)
	{
		System.out.println("Pay "+ money +" dollars for " + name );
	}	 
}

 

3.代理角色的实现

public class Proxy implements PayInterface
{
	private RealObject real; //真实对象的引用
	
	public void payFor(String name, int money)
	{
		this.beforePay();
		
		real = new RealObject();
		real.payFor(name, money);
		
		this.afterPay();
	}
	
	private void beforePay()
	{
		System.out.println("Before pay for,I can do myserf things");
	}
	
	private void afterPay()
	{
		System.out.println("After pay for, I can get my pay");
	}
}

代理角色完成代理功能之外,还可以完成自己的功能。

4.最后客户端的调用(Client)

public class Client
{
	public static void main(String[] args)
	{
		PayInterface proxy = new Proxy();
		proxy.payFor("Jimmy", 900);
	}
}


运行结果为:

 

简简单单,其实本人对代理模式不甚了解,希望各位前辈指点一二。
原文地址:https://www.cnblogs.com/hanyuan/p/2587326.html