最近学了下代理模式,在这里与大家分享一下,本人是初学者,如果有不足之处,请各位指出,并多加指点
代理模式结构图如下:
代理模式的角色有:
——抽象角色:声明真实对象和代理对象的共同接口。
——代理角色:代理对象角色的内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象
相同的接口以便在任何时刻都能代替真实对象。同时代理对象可以在执行真实对象操作时,附加其他 的操作,相当于对真实对象进行封装。(对应上图的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);
}
}
运行结果为:
简简单单,其实本人对代理模式不甚了解,希望各位前辈指点一二。