zoukankan      html  css  js  c++  java
  • Spring-静态代理

    一.静态代理

        由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类  的关系在运行前就确定了。

    1.满足的条件和他的弊端

      1、需要知道核心类(被代理类)是哪一个类,并且有什么方法。 

      2、非核心的代码需要重复写多次,显得代码的结构臃肿,形成代码冗余。

      3、非核心类(代理类)需要实现核心类(被代理类)实现的接口,也就是他们需要实现共同的接口,但是以核心类实现的接口(被代理类)为准。

    先声明一个主题接口

    复制代码
    package SubjectText01;
    
    
    public interface Subject {
        public void request();
    }
    复制代码

    在实现类中要重写这个方法

      public class RealSubject implements Subject {
        public void request() {
          System.out.println("真实的主题对象");
        }
      }
    复制代码
     public class ProxySubject implements Subject { 
      private RealSubject realSubject;
      public RealSubject getRealSubject() {
      return realSubject;
    }
    public void setRealSubject(RealSubject realSubject) {
      this.realSubject = realSubject;
    }
     public void request() {
      System.out.println("Before====");
      realSubject.request();
      System.out.println("After====");
     }
    }
    复制代码

    在测试类中

    复制代码
      @Test public void t2(){ 
      //创建一个真实的主题对象
      RealSubject realSubject=new RealSubject();
      //创建一个代理主题对象
      ProxySubject proxy=new ProxySubject();
      //将真实对象赋值给代理对象
      proxy.setRealSubject(realSubject);
      proxy.request();
      }
  • 相关阅读:
    c/cpp枚举练习
    数据类型的标识
    引用变量
    cocos2dx 3.3 笔记
    希望获取到页面中所有的checkbox怎么做?
    如何判断某变量是否为数组数据类型?
    驼峰函数写法
    trim()函数
    js 获取页面可视区域宽高
    全屏滚动插件
  • 原文地址:https://www.cnblogs.com/buai/p/8526813.html
Copyright © 2011-2022 走看看