代理模式在我们使用java流行的框架里是很常见的,代理模式的定义为:为其他对象提供一种代理以控制对这个对象的访问
三种角色
1.抽象角色
2.代理角色(必须实现抽象角色)
3.实际角色(必须实现抽象角色)
编码实现实例
项目结构
引入lombok包,写出优美代码
POJO
import lombok.*;
@AllArgsConstructor
@ToString
public class User {
private String name;
private Integer age;
}
抽象角色
public interface Proxy {
void show(User user);
}
目标角色
public class TargetUser implements Proxy {
public void show(User user){
System.out.println("TargetUser :: show(): "+user.toString());
}
}
代理角色
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class ProxyUser implements Proxy {
private Proxy proxy;
public void show(User user) {
System.out.println("ProxyUser :: show() ----------进入-----------");
proxy.show(user);
System.out.println("ProxyUser :: show() ----------退出-----------");
}
}
Test 测试
public class Test {
public static void main(String[] args) {
TargetUser targetUser=new TargetUser();
Proxy proxy=new ProxyUser(targetUser);
proxy.show(new User("tom",11));
}
}
结果输出
ProxyUser :: show() ----------进入-----------
TargetUser :: show(): User(name=tom, age=11)
ProxyUser :: show() ----------退出-----------
总结
简而言之,就是我们通过代理角色来代理目标角色的操作