/**
* 抽象角色
*/
public interface IHello
{
void sayHello(String name);
}
/**
* 真实角色
*/
public class Hello implements IHello
{
@Override
public void sayHello(String name)
{
System.out.println("真实角色的方法 " + name); //$NON-NLS-1$
}
}
/**
* 代理类 --- 动态代理
*/
public class ProxyHello implements InvocationHandler
{
Object obj;
/**
* 构造函数
* @param obj
*/
public ProxyHello(Object obj)
{
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
System.out.println("在代理方法执行之前"); //$NON-NLS-1$
method.invoke(obj, args);
System.out.println("在代理方法执行之后"); //$NON-NLS-1$
return null;
}
public static void main(String[] args)
{
Hello hello = new Hello();
ProxyHello pHello = new ProxyHello(hello);
Class hClass = hello.getClass();
IHello h = (IHello)Proxy.newProxyInstance(hClass.getClassLoader(),
hClass.getInterfaces(),
pHello);
h.sayHello("化为");
}
}
-----------------------------
/**
* 抽象角色
*/
public interface IHolle
{
public void sayHello(String name);
}
/**
* 代理类
*/
public class Hello implements IHolle
{
@Override
public void sayHello(String name)
{
System.out.println("实现类的方法 " + name); //$NON-NLS-1$
}
}
/**
* 代理类 --- 静态代理
*/
public class ProxyHello implements IHolle
{
Hello hello;
public ProxyHello(Hello hello)
{
this.hello = hello;
}
@Override
public void sayHello(String name)
{
proRequest();
hello.sayHello(name);
proResponse();
}
public void proRequest()
{
System.out.println("代理之前的处理"); //$NON-NLS-1$
}
public void proResponse()
{
System.out.println("代理之后的处理"); //$NON-NLS-1$
}
public static void main(String[] args)
{
ProxyHello ProxyHello = new ProxyHello(new Hello());
ProxyHello.sayHello("huawei"); //$NON-NLS-1$
}
}
* 抽象角色
*/
public interface IHello
{
void sayHello(String name);
}
/**
* 真实角色
*/
public class Hello implements IHello
{
@Override
public void sayHello(String name)
{
System.out.println("真实角色的方法 " + name); //$NON-NLS-1$
}
}
/**
* 代理类 --- 动态代理
*/
public class ProxyHello implements InvocationHandler
{
Object obj;
/**
* 构造函数
* @param obj
*/
public ProxyHello(Object obj)
{
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
System.out.println("在代理方法执行之前"); //$NON-NLS-1$
method.invoke(obj, args);
System.out.println("在代理方法执行之后"); //$NON-NLS-1$
return null;
}
public static void main(String[] args)
{
Hello hello = new Hello();
ProxyHello pHello = new ProxyHello(hello);
Class hClass = hello.getClass();
IHello h = (IHello)Proxy.newProxyInstance(hClass.getClassLoader(),
hClass.getInterfaces(),
pHello);
h.sayHello("化为");
}
}
-----------------------------
/**
* 抽象角色
*/
public interface IHolle
{
public void sayHello(String name);
}
/**
* 代理类
*/
public class Hello implements IHolle
{
@Override
public void sayHello(String name)
{
System.out.println("实现类的方法 " + name); //$NON-NLS-1$
}
}
/**
* 代理类 --- 静态代理
*/
public class ProxyHello implements IHolle
{
Hello hello;
public ProxyHello(Hello hello)
{
this.hello = hello;
}
@Override
public void sayHello(String name)
{
proRequest();
hello.sayHello(name);
proResponse();
}
public void proRequest()
{
System.out.println("代理之前的处理"); //$NON-NLS-1$
}
public void proResponse()
{
System.out.println("代理之后的处理"); //$NON-NLS-1$
}
public static void main(String[] args)
{
ProxyHello ProxyHello = new ProxyHello(new Hello());
ProxyHello.sayHello("huawei"); //$NON-NLS-1$
}
}