定义 为其它对象提供一种代理以控制对这个对象的访问java
类图ide
函数
优势 this
1. 职责清晰 真实的角色就是实现的业务逻辑,不用关心其余非本指责的事务spa
2. 高扩展性 具体主题角色不能怎么变化,只要它实现了接口,代理类彻底能够在不作任何修改的状况下使用代理
3. 智能化 动态代理是最好的体现,即在运行阶段才指定实际代理对象(Struts如何把表单元素映射到对象上?)code
使用场景 典型应用如Spring AOPorm
扩展xml
1. 普通代理 要求客户端只能访问代理角色,而不能访问真实角色对象
2. 强制代理 要求客户端必须经过真实角色找到代理角色(演员和经纪人)
3. 虚拟代理 指在须要的时候,才初始化主题对象,能够避免被代理对象太多而引发的初始化缓慢问题
1. 动态代理 指在实现阶段不用关心代理谁,而在运行阶段才指定代理哪一个对象,动态代理根据被代理的接口生成全部的方法即给定一个接口,动态地理就宣传我已经实现该接口下的全部方法了(经过InvocationHandler接口)
类图