public interface SomeService {
String doSome();
}
public class SomeServiceImpl implements SomeService{
@Override
public String doSome() {
// TODO Auto-generated method stub
return "hello";
}
}
/**
* 代理类
* 增强实现类
* 和实现类实现同一个接口
*
*/
public class SomeProxy implements SomeService{
private SomeService target;
public SomeProxy(SomeService target) {
super();
this.target = target;
}
/**
* 增强方法
* 将返回结果转换为大写
*/
@Override
public String doSome() {
return target.doSome().toUpperCase();
}
}
/**
* 定义公共接口
*
*
*/
public interface SomeService {
String doSome();
}
/**
* 静态代理模式的实现类
*
*/
public class SomeServiceImpl implements SomeService{
@Override
public String doSome() {
// TODO Auto-generated method stub
return "hello";
}
}
public static void main(String[] args) {
SomeService some = new SomeServiceImpl();
// 获取静态代理对象
SomeService proxy = (SomeService) Proxy.newProxyInstance(
some.getClass().getClassLoader() // 实现类的类加载器
, some.getClass().getInterfaces() // 实现类 实现的所有的接口
, new InvocationHandler() // 处理器
{
/**
* proxy 代理对象
* method 目标的方法
* args 目标方法的参数
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
String msg = (String) method.invoke(some, args);
return msg.toUpperCase();
}
});
System.out.println(proxy.doSome());
}