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

    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的引用,并进行一层封装。

    静态代理的优点

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

    静态代理的缺点:

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

  • 相关阅读:
    跳出语句 break continue
    循环语句 for循环、while循环、do while循环
    选择语句
    判断语句
    方法入门
    ++运算与--运算
    js面向对象的几种方式----工厂模式、构造函数模式、原型模式
    JavaScript This 的六道坎
    前端必备,十大热门的 JavaScript 框架和库
    localStorage、sessionStorage详解,以及storage事件使用
  • 原文地址:https://www.cnblogs.com/1234AAA/p/8516120.html
Copyright © 2011-2022 走看看