• 静态代理


    Java 静态代理

    静态代理通常用于对原有业务逻辑的扩充。比如持有二方包的某个类,并调用了其中的某些方法。然后出于某种原因,比如记录日志、打印方法执行时间,但是又不好将这些逻辑写入二方包的方法里。所以可以创建一个代理类实现和二方方法相同的方法,通过让代理类持有真实对象,然后在原代码中调用代理类方法,来达到添加我们需要业务逻辑的目的。

    这其实也就是代理模式的一种实现,通过对真实对象的封装,来实现扩展性。

    一个典型的代理模式通常有三个角色,这里称之为**代理三要素**

    共同接口

    public interface abstarct {
        public void request();
    }

    真实对象

    public class Zsubject implements abstarct {
        public void request() {
            System.out.println("今天你学习了吗?");
        }
    }

    代理对象

    public class ProxySubject implements abstarct{
    
        private Zsubject zsubject=new Zsubject();
    
        public Zsubject getZsubject() {
            return zsubject;
        }
    
        public void setZsubject(Zsubject zsubject) {
            this.zsubject = zsubject;
        }
    
        public void request() {
            System.out.println("Before==之前");
    
            zsubject.request();
            System.out.println("After==之后");
    
        }
    }

    运行代码

    public class Test20180306 {
        //静态代理
        @Test
        public void Test01(){
            //真实主题
            Zsubject zu=new Zsubject();
            //代理主题
            ProxySubject pro=new ProxySubject();
    
            pro.setZsubject(zu);
            pro.request();
    
        }
    }

    这种代理模式也最为简单,就是通过proxy持有realObject的引用,并进行一层封装。

    静态代理的优点

    先看看代理模式的优点: 扩展原功能,不侵入原代码。

    静态代理的缺点:

    需要存在物理文件,如果有多个静态代理的话,就会有很多个物理文件

  • 相关阅读:
    win10下安装为知笔记的markdown插件
    最近一段时间的工作状态
    C++中的取余与取模
    来新项目后,最心虚的一个夜晚
    g++添加支持c++11的选项
    Linux ssh远程登陆方式:密码与公钥
    判断脚本加载完成
    解决ie6下最小高度问题
    display:inline-block的深入理解
    ff下button按钮上的文字垂直居中
  • 原文地址:https://www.cnblogs.com/1234AAA/p/8516120.html
Copyright © 2020-2023  润新知