今天在详细的给大家分析一下代理模式~
代理模式的定义:
给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式包含如下角色:
subject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口;
RealSubject:真实主题角色,是实现抽象主题接口的类;
Proxy:代理角色,内部含有对真实对象RealSubject的引用,从而可以操作真实对象。
代理对象提供与真实对象相同的接口,以便代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。如下图所示:
那么代理又分为静态代理和动态代理,这里写两个小的demo,动态代理采用的就是JDK代理。举个例子就是现在一个班上的学生需要交作业,现在由班长代理交作业,那么班长就是代理,学生就是被代理的对象。
1 静态代理
首先,我们创建一个Person接口。这个接口就是学生(被代理类),和班长(代理类)的公共接口,他们都有交作业的行为。这样,学生交作业就可以让班长来代理执行。
/**
* Created by Mapei on 2018/11/7
* 创建person接口
*/
public interface Person {
//交作业
void giveTask();
}
复制代码
Student类实现Person接口,Student可以具体实施交作业这个行为。
/**
* Created by Mapei on 2018/11/7
*/
public class Student implements Person {
private String name