编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用方法时加上系统功能的代码,就是代理模式。
代理类的构造函数接收的是invocationhandler的子类或实现类对象,当你在调用代理类的某个方法时,其实就是在调用invocationhandler子类对象身上的invoke方法,invoke方法内部又会去调用目标类的相同的方法,只是在调用目标类的方法前和后可以加上其他的功能。这样就可以实现在调用代理方法时其实就是在调用目标类的方法。
如果将invocationhandler实现类中的目标类和添加的其他功能抽取出去,对外提供一个接口,就可以做成一个框架。后期出现的类只要实现了这个接口,就可以对这个类进行代理。在配置文件中可以配置目标类也可以配置代理类,很容易切换
|