代理模式(Proxy pattern):当一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。静态代理是具体去实现需要代理对象接口,覆写方法时进行个性化操作。
单独为代理而实现作为某个接口实现类的则为静态代理(Static Proxy)。
不多说了,上代码?
package com.ant;
public interface Hello {
public void say();
}
package com.ant;
public class HelloImpl implements Hello {
@Override
public void say() {
System.out.println("hellw world!");
}
}
package com.ant;
public class StaticProxy implements Hello {
private Hello hello;
@Override
public void say() {
System.out.println("staticProxy welcome");
hello.say();
}
public StaticProxy(Hello hello){
this.hello = hello;
}
}
package com.ant;
public class StaticProxyTest {
public static void main(String[] args) {
Hello hello = new HelloImpl();
StaticProxy staticProxy = new StaticProxy(hello);
staticProxy.say();
}
}
总结:
静态代理有一个弊端,就是当接口中的方法进行了变更时(新增、删减必要实现方法时),所有的代理类都必须做相应的变更(假设有多个代理类情况下),无疑增加了代码复杂度,复用性低,这个时候就可以有动态代理。