目录
- 简介
- 包含角色
- UML类图
- java实现
- 优缺点
1. 简介:
给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,在 AOP实现、拦截器、中介、黄牛、媒婆等应用场景中使用,主要是为了完成自己不想做但是有不得不做的事情
2. 包含角色
###抽象角色
一般使用接口或者抽象类来实现
2.2 真实角色
被代理的角色
2.3 代理角色
代理真实角色,代理真实角色后一般会做一些附属的操作
3. UML类图
4. java实现
4.1 抽象角色
/**
* @Auther: chengqj
* @Description: 抽象角色
*/
public interface Person {
void findLove();
}
4.2具体角色
/**
* @program: proxy
* @description: 具体角色
* @author: chengqj
* @create: 2018-07-27 09:23
**/
public class ChengqjPerson implements Person{
@Override
public void findLove() {
System.out.println("chengqj 找对象");
}
}
4.3 代理角色
/**
* @program: proxy
* @description: 代理角色
* @author: chengqj
* @create: 2018-07-27 09:24
**/
public class MeiPoProxy {
private Person person;
public MeiPoProxy(Person person) {
this.person = person;
}
public void findLove() {
System.out.println("物色人员");
person.findLove();
System.out.println("媒婆后续跟踪");
}
}
4.4 测试
Person person = new ChengqjPerson();
new MeiPoProxy(person).findLove();
5. 优缺点
5.1 优点:
业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。
5.2 缺点:
1)代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。
2)如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。