ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

代理模式

2021-08-23 12:01:48  阅读:107  来源: 互联网

标签:StaticProxy 模式 代理 Proxy subject public Subject


1、简介

  代理模式是对象的结构模式,代理模式给某个对象提供一个代理对象,并由代理对象控制对原对象的引用。

2、代理模式的分类

  2.1、按照目的分类:远程代理,虚拟代理,Copy-on-Write代理,保护代理,Cache代理,防火墙代理,同步化代理,智能引用代理。

  2.2、按照实现方式分类:动态代理和静态代理,其中,动态代理又分为jdk代理和cglib代理,这篇文章,只讨论静态代理,说明代理模式,动态代理以后再专门讨论

3、静态代理涉及到的角色

  3.1、抽象接口(Subject) : 需要被委托类和代理类实现。

  3.2、委托类(RealSubject):被代理的类,需要实现抽象接口。

  3.3、代理类(Proxy)   :需要实现抽象接口。

4、源代码

  4.1、抽象代理接口

复制代码
package Proxy.StaticProxy;
/**
 * ********************************************************  
* @ClassName: Subject 
* @Description: 静态代理  抽象代理接口 需要被委托类和代理类实现
*  
**********************************************************
 */
public interface Subject {
    void request();
}
复制代码

  4.2、委托类

 
package Proxy.StaticProxy;
/**
 * ********************************************************  
* @ClassName: RealSubject 
* @Description: 委托类角色 
*  
**********************************************************
 */
public class RealSubject implements Subject{

    @Override
    public void request() {
        System.out.println("RealSubject");
    }

}
 

  4.3、代理类

 
package Proxy.StaticProxy;
/**
 * ********************************************************  
* @ClassName: StaticProxy 
* @Description: 代理类角色 
*  
**********************************************************
 */
public class StaticProxy  implements Subject{
    private Subject subject;
    
    public StaticProxy(Subject subject) {
        this.subject = subject;
    }
    @Override
    public void request() {
        System.out.println("Begin");
        subject.request();
        System.out.println("End");
        
    }
    
}
 

  4.4、测试客户端

 
package Proxy.StaticProxy;
/**
 * ********************************************************  
* @ClassName: StaticProxyTest 
* @Description: 静态代理测试客户端
*  
**********************************************************
 */
public class StaticProxyTest {

    public static void main(String[] args) {
        
        Subject subject = new StaticProxy(new RealSubject());
        subject.request();
        
    }

}

标签:StaticProxy,模式,代理,Proxy,subject,public,Subject
来源: https://www.cnblogs.com/lanblogs/p/15175292.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有