动态代理模式


 首先要有一个接口

public interface SayHello
{
	public void sayHello();
}


其次要有一个接口的实现类
 

public class SayHelloImp implements SayHello
{
	@Override
	public void sayHello()
	{
		System.out.println("hello world!");
	}
}


要有一个代理类
代理类主要注意两点一个是要实现invocationHandler该接口,其次就是对Proxy.newInstance();方法的调用

public class MyProxy implements InvocationHandler
{
	private Object obj;
	private void before()
	{
		System.out.println("before");
	}
	private MyProxy(Object ob)
	{
		obj = ob;
	}
	private void after()
	{
		System.out.println("after");
	}
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable
	{
		Object reObject;
		before();
		reObject = method.invoke(this.obj, args);
		after();
		return reObject;
	}
	public static Object getInstance(Object ob)
	{
		return Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), ob
				.getClass().getInterfaces(), new MyProxy(ob));
	}
	
}


最后是main方法

public static void main(String[] args)
{
		SayHello hello = (SayHello) MyProxy.getInstance(new SayHelloImp());
		hello.sayHello();
}


你可能感兴趣的:(动态代理模式)