静态代理
首先定义一个接口
package com.hsit.hello;
public interface IHello {
public void sayHello();
}
之后定义一个实现接口的类ENhello
package com.hsit.hello.impl;
import com.hsit.hello.IHello;
public class ENhello implements IHello {
@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("hello");
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "我是ENhello";
}
}
静态代理要求代理类必须实现要代理的类ENhello的接口,才能进行代理,拓展代理类的每个方法。但是一旦接口定义的方法过多,就会造成代理类要为每一个接口方法进行功能拓展,使得程序很拥挤
package com.hsit.proxy;
import com.hsit.hello.IHello;
public class StaticProxy implements IHello {
private IHello iHello;
public StaticProxy(IHello iHello) {
this.iHello = iHello;
}
@Override
public void sayHello() {
System.out.println("Welcome");
iHello.sayHello();
System.out.println("Bye");
}
}
测试代码
package com.hsit.proxy;
import com.hsit.hello.impl.ENhello;
public class TestStaticProxy {
/**
* @param args
*/
public static void main(String[] args) {
StaticProxy proxy = new StaticProxy(new ENhello());
proxy.sayHello();
}
}