代理模式
代理模式理解起来很简单,比如说我有一个接口叫做Hello
public interface Hello { void say(); }
|
他的实现类是HelloImpl
public class HelloImpl implements Hello { @Override public void say() { System.out.println("hello world"); } }
|
但是我又想在say()调用前做些什么,这里其实很关键,因为你找到了一个切点,这就是AOP——面向方面编程的特征,这个待会再说。想加新的功能,但是我们都学过开闭原则,所以我们打算再创建一个代理类来实现这一功能(组合)
public class HelloProxy implements Hello { private Hello hello;
public HelloProxy() { hello = new HelloImpl(); }
@Override public void say() { System.out.println("start"); hello.say(); System.out.println("end"); } }
|
然后运行试下
public static void main(String[] args) { Hello hello = new HelloProxy(); hello.say(); }
|
结果就是
这样看着既简单,又实现了需要的功能,似乎已经满足我们的需求了。这种方式叫做静态代理。