• Java静态代理


     

     

    静态代理

     静态代理和JDK代理一样都是通过实现接口的方式实现代理模式
     代理接口类
     public interface mainFunction {
    public String doOne();
    public String doTwo();
    }
     业务类(实现代理接口)
     public class Services implements mainFunction {
    public String doOne() {
    // TODO Auto-generated method stub
    System.out.println("this is doOne function");
    return "This is doOne";
    }
    public String doTwo() {
    // TODO Auto-generated method stub
    System.out.println("this is doTwo function");
    return "This is doTwo";
    }
    }
     静态代理类(实现代理接口)
    public class Proxy implements mainFunction {
    private Services services;
    public Proxy(Services services){
    super();
    this.services=services;
    }
    public String doOne() {
    // TODO Auto-generated method stub
    return services.doOne()+" my name is TangYu";
    }
    public String doTwo() {
    // TODO Auto-generated method stub
    return services.doTwo()+" my name is jarrem";
    }
    }


     测试类
    public class MyTest {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Services services=new Services();
    Proxy proxy=new Proxy(services);
    System.out.println(proxy.doOne());
    System.out.println(proxy.doTwo());
    }
    }
      原理:
    在静态代理类中获取业务类的数据并进行修改实现代理加强
    缺点:1.代码冗余,业务类和代理类都要实现代理接口,当增加接口时,全部要修改,增加了代码复杂度
     2.代理对象只服务于一种类型的对象,如果要服务多类型的对象。要为每一种对象都进行代理
     即静态代理类只能为特定的接口(Service)服务。如想要为多个接口服务则需要建立很多个代理类。


  • 相关阅读:
    Linux mint下firefox安装flashplayer
    Linux mint下安装iNode遇到的几个问题
    FireFox浏览器访问ip6域名的问题
    用牛顿迭代法和二分法求方程的根
    VC6工程向导制作
    配置多个版本的python的系统环境变量
    C语言习题解答:求某一天为一年中的第几天
    使用Python求解水仙花问题
    Python语言中round函数的一个疑惑
    Linux下安卓手机管理软件QtADB的使用
  • 原文地址:https://www.cnblogs.com/jarrem/p/5836602.html
Copyright © 2020-2023  润新知