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();
    }


    }

      

  • 相关阅读:
    FastJson的简单使用
    一些没用过的方法的学习
    Windows系统激活
    mysql数据库运行性能检查脚本
    基于windows 的Apache HTTP Server的一次小安装
    MySQL、Oracle批量插入、更新批量inisert、update
    IDEA中右键没有“Subversion”相关目录解决方法
    关于spring boot项目启动报错问题
    我的2016
    用intellij IDEA 编写时,无编程提示问题
  • 原文地址:https://www.cnblogs.com/hitwtx/p/2157189.html
Copyright © 2011-2022 走看看