定义:
为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介的作用。(结构型)
使用场景:
1.保护目标对象2.增强目标对象
优点:
1.代理模式能将代理对象与真实对象被调用的目标对象分离。2.一定程度上降低了系统的耦合度,扩展性好。3.保护目标对象。4.增强目标对象。
缺点:
1.代理模式会造成系统设计中类的数目的增加。2.在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢3.增加了系统的复杂度。
Coding(模拟数据库的分库分表场景):
实例对象:
接口方法(代理对象接口):
代理对象接口实现
模操作数据库的接口类
模操作数据库的接口实现类:
静态代理实现,具体选择数据库的连接由代理增强实现:
测试
测试结果:
静态代理UML:
静态代理代码耦合性比较强,需要在具体的业务方法中手动调用。
动态代理实现,通过生成代理类的方式执行增强方法,减少代码耦合性:
测试:
测试结果为:
领取专属 10元无门槛券
私享最新 技术干货