代理模式
简介
当用户希望和某个对象打交道,但程序可能不希望用户直接和某个对象打交道或者不能。这时候可以使用一个代理对象。该对象里面再调用实际对象的方法。比如老板和秘书,都有打电话的功能。用户是通过秘书来联系,然后秘书再联系老板。
UML类图
未完待续。。。
角色
- 抽象主题
- 实际对象(老板)
- 代理对象(秘书)
例子
- 抽象主题
public interface phone{
void heardPhone();
}
- 实际对象
public boss implements phone(){
public void heardPhone(){
System.out.println("有人打电话");
}
}
- 代理对象
public secretary implements phone(){
private boss;
public void heardPhone(){
boss = new boss();
boss.heardPhone();
}
}
解决了什么问题
可以让用户和实际对象实现了解耦。并且,当用户请求对个某个对像时,做一些动作。比如日志操作,校验等等。
Java 动态代理
以上都是静态代理。在Java中还有动态代理以及Cglib代理。
https://www.cnblogs.com/cenyu/p/6289209.html