静态代理的意思就是,我要做一件事,但是我不自己去做,而是委托别人去做,UML通常为:
代理类(Proxy)也要实现实际类(RealSubject)的接口。
比较简单,下面直接给出代码示例:
public interface Hello {
void say(String name);
}
public class HelloImpl implements Hello {
@Override
public void say(String name) {
System.out.println("Hello! " + name);
}
}
public class HelloProxy implements Hello {
private Hello hello;
public HelloProxy(Hello hello) {
this.hello = hello;
}
@Override
public void say(String name) {
before();
hello.say(name);
after();
}
private void before() {
System.out.println("Before");
}
private void after() {
System.out.println("After");
}
}
public class Test {
public static void main(String[] args) {
Hello hello = new HelloImpl();
Hello proxy = new HelloProxy(hello);
proxy.say("biglong");
}
}
输出:
Before
Hello! biglong
After