zoukankan      html  css  js  c++  java
  • 设计模式复习 之 代理模式

    1. Java实现

    interface NetWork
    {
    public abstract void browser();
    }
    class Real implements NetWork
    {
    @Override
    public void browser() {
    // TODO Auto-generated method stub
    System.out.println("浏览信息");
    }
    }
    public class designpattern_proxy implements NetWork{
    private NetWork newwork;
    designpattern_proxy(NetWork network)
    {
    this.newwork = network;
    }
    @Override
    public void browser() {
    // TODO Auto-generated method stub
    this.newwork.browser();
    }
    public static void main(String [] args)
    {
    new designpattern_proxy(new Real()).browser();
    }
    }

      2. 动态代理

    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;

    interface NetWork
    {
    public abstract void browser();
    }
    class Real implements NetWork
    {
    @Override
    public void browser() {
    // TODO Auto-generated method stub
    System.out.println("浏览信息");
    }
    }
    //继承自InvocationHandler Override它的invoke()方法
      public class designpattern_dynmicproxy implements InvocationHandler{
    private Object sub;
    public designpattern_dynmicproxy(){}
    public designpattern_dynmicproxy(Object obj)
    {
    this.sub = obj;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
    throws Throwable {
    // TODO Auto-generated method stub
    System.out.println("before calling " + method);
    method.invoke(sub, args);
    System.out.println(
    "after calling " + method);
    return null;
    }


    public static void main(String [] args)
    {
    Real r
    = new Real();
    InvocationHandler ds
    = new designpattern_dynmicproxy(r);
    Class cls
    = r.getClass();
    NetWork nw
    = (NetWork)Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(),ds);
    nw.browser();
    }


    }

      

  • 相关阅读:
    设计模式-工厂模式-场景以及优缺点-目的就是应对变化 (国江面试回答的)
    开启otl的64位长整数支持
    otl翻译(11) -- OTL的迭代器
    OTL翻译(10) -- OTL的流缓冲池
    OTL翻译(9) --常量的SQL语句
    OTL翻译(8) -- otl_long_string/otl_long_unicode_string类
    OTL翻译(7) -- otl_exception类
    OTL翻译(6) -- otl_connect类
    OTL翻译(5) -- otl_stream流相关绑定变量
    OTL翻译(4) -- otl_stream类
  • 原文地址:https://www.cnblogs.com/hitwtx/p/2157189.html
Copyright © 2011-2022 走看看