design_modelproxy
Posted gg128
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了design_modelproxy相关的知识,希望对你有一定的参考价值。
1.代理模式
给自己一些简单的形象,让代理者包装和处理信息给客户,与适配器模式的区别是,适配器的处理类无效实现真实类的共同接口,而代理模式需要实现共同的接口,实现同样的接口,重写同样的方法,调用一样的方法名。
2.静态代理:自己手写代理模式,作用代理指定接口下的实现,接口已经指定死了
3.代码实例
public interface Proxy { public abstract void getName(); public abstract void getAddress(); public abstract void getTel(); } public class ProxyReal implements Proxy { @Override public void getName() { System.out.println("lili"); } @Override public void getAddress() { System.out.println("beijing"); } @Override public void getTel() { System.out.println("12345678"); } } public class ProxyHandle implements Proxy{ private Proxy proxy; @Override public void getName() { proxy.getName();; } @Override public void getAddress() { proxy.getAddress(); } @Override public void getTel() { proxy.getTel(); } public ProxyHandle(Proxy proxy) { super(); this.proxy = proxy; } }
4.动态代理模式//较静态代理模式是可以找使用时指定接口以及接口下的实现类
public interface Proxy { public abstract void getName(); public abstract void getAddress(); } public class ProxyReal implements Proxy { @Override public void getName() { System.out.println("lili"); } @Override public void getAddress() { System.out.println("beijing"); } } public class ProxyHandle implements InvocationHandler { private Proxy proxy1; @Override // invoke(Object proxy, Method method, Object[] args) 利用的反射,可以对比一下方法反射 // 调用proxyreal时实际调用的方法, public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { method.invoke(proxy1, args); return proxy; } public ProxyHandle(Proxy proxy) { super(); this.proxy1 = proxy; } } public class Client { public static void main(String[] args) { ProxyHandle proxyHandle = new ProxyHandle(new ProxyReal()); Class<?> clazz = ProxyReal.class; // 需要指定类加载器的原因是防止已被某个加载器加载而不会再次加载(类加载机制,双亲委托机制),通过反射确定proxyreal.class的getInterfaces获取所实现的接口, cn.dynamicproxy.test.Proxy proxy = (cn.dynamicproxy.test.Proxy) Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), proxyHandle); proxy.getName(); ; } }
以上是关于design_modelproxy的主要内容,如果未能解决你的问题,请参考以下文章