代理模式(委托模式)定义
为其他对象提供一种代理以控制这个对象的访问
代理模式的通用类图
类图中3哥角色的定义
Subject抽象主题角色
# 可以使一个接口或者抽象类,一个最普通的业务类型定义,无特殊要求。
RealSubject
# 也叫做被委托角色、被代理角色,业务逻辑的具体执行者
Proxy
# 也叫做委托类、代理类。负责对真实角色的应用。把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在真实主题角色处理完毕前后做预处理和善后处理工作。
public interface Subject {
public void request();
}
//
public class RealSubject implements Subject {
// 处理业务逻辑
@Override
public void request() {
}
}
public class Proxy implements Subject {
// 要代理的那个类
private Subject subject = null;
// 默认被代理
public Proxy() {
this.subject = new Proxy();
}
// 通过构造函数传递代理类
public Proxy(Object obj) {
}
@Override
public void request() {
this.before();
this.subject.request();
this.after();
}
public void after() {
System.out.println("善后处理");
}
public void before() {
System.out.println("预处理");
}
}
代理模式的优点
# 1 职责清晰
# 2 高扩展性(具体角色随时会发生变化,只要它实现了接口,不管怎么变化,代理类完全可以不做任何修改的情况下使用)
# 智能化(主要体现在动态代理上)
动态代理通用类图
未完待续