一.静态代理
1. 原理:在原本类的某个方法中想要加入一些其它的业务逻辑;
2. 一般的应用场景:当你对项目进行二次开发的时候,里面有类牵扯到了很多很多造成了你不能去修改那个类中方法的时候,你可以用静态代理,通过调用代理类来给原本的方法加入你想要的逻辑,从而不牵扯到之前功能的正常使用
3.限制条件:
a)一个代理对象只能服务一个类
b)代理对象必须实现某个接口
3. 源代码的实现:
a:Hello接口
package com.lilei.test.proxytest;
/**
* Created by Administrator on 2017/9/26
*/
public interface Hello {
void say(String name);
void eat(String name);
}
b:接口的实现类HelloImpl:
package com.lilei.test.proxytest;
/**
* Created by Administrator on 2017/9/26.
*/
public class HelloImp1 {
public void say(String name) {
System.out.println("Hello! "+name);
}
public void eat(String name) {
System.out.println("eat "+name);
}
}
c:代理类:
package com.lilei.test.proxytest;
/**
* 静态代理类
* Created by Administrator on 2017/9/26.
*/
public class HelloProxy implements Hello {
private Hello hello;
public void eat(String name) {
}
public HelloProxy(){
hello = new HelloImp();
}
public void say(String name) {
before();
hello.say(name);
after();
}
private void before(){
System.out.println("Before");
}
private void after(){
System.out.println("After");
}
}
d:静态代理测试类:
package com.lilei.test.proxytest;
/**
*
* Created by Administrator on 2017/10/11.
*/
public class StaticProxyTest {
public static void main(String[] args) {
Hello hello = new HelloProxy();
hello.say("lilei");
}
}