23种设计模式(6):代理模式
目录 1.概念 2.程式范例 2.1巫师 2.2塔接口 2.3象牙塔实现类 2.4象牙塔的代理类(相当于例子的门卫) 2.5客户端调用者 2.6结果打印 2.7.小结 3.jdk动态代理模式 3.1 InvocationHandler接口 3.2Proxy类 3.3程式范例 4.CGLIB动态代理模式 4.1程式范例 1.概念 定义:为另一个对象提供代理,以控制外界对其的访问。 维基百科上的对代理模式是这样解释的,代理是客户端正在调用的包装器或代理对象,以访问幕后的真实服务对象。代理的使用可以简单地转发到真实对象,也可以提供其他逻辑。在代理中,可以提供额外的功能,例如在对实际对象的操作占用大量资源时进行缓存,或者在对实际对象的操作被调用之前检查先决条件。 我们举一个例子加以说明,从前有一个象牙塔,当地的巫师都去那里学习法术。随着时间的推移,当地学习法术的巫师越来越多,最后造成每天的 象牙塔人满为患 。于是请来了两个力大无比的 门卫战士 ,他们规定每次 只能进去三个巫师 进行学习。于是,这两个门卫战士就像是象牙塔的代理,代理代表塔的访问出入权限并向其添加访问控制。 简而言之,使用代理模式,用一个类表示另一个类的功能。 2.程式范例 2.1巫师 public class Wizard { private String name ; public Wizard ( String