专栏首页编程技术专栏代理模式(设计模式)
原创

代理模式(设计模式)

概述

代理模式,为其他对象提供了一种代理以控制对这个对象的访问。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。

代理模式

UML图

图 1

代码

代理类和真实类的公用接口

public interface Subject {
    void request();
}

真实类的请求

public class RealSubject implements Subject{
    @Override
    public void request() {
        System.out.println("真实请求");
    }
}

代理请求,引入了真实类对象,对方法进行了增强

public class Proxy implements Subject{

    private RealSubject realSubject;

    @Override
    public void request() {
        if (realSubject == null) {
            realSubject = new RealSubject();
        }
        realSubject.request();
        System.out.println("代理请求");
    }
}

主函数测试

public class JavaDemo {

    public static void main(String[] args){
        Subject proxy = new Proxy();
        proxy.request();
    }
}

应用场景

比如当我们使用别人的代码的时候,可以通过代理,对方法增强,避免了修改别人的代码。Spring AOP。

优缺点

职责清晰了,高扩展性,智能化。但由于多了一个代理对象,可能会使请求的处理速度变慢,有些代理的实现较为复杂。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 约瑟夫斯环问题的几种经典解法

    有n个人围成一圈,从1开始顺序排号。从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号?

    WindSun
  • I/O多路复用select/poll/epoll

    早期操作系统通常将进程中可创建的线程数限制在一个较低的阈值,大约几百个。因此, 操作系统会提供一些高效的方法来实现多路IO,例如Unix的select和poll...

    WindSun
  • const与#define的区别、优点

    补充:预处理器根据以#开头的命令,修改原始的程序。比如我们常见的#include <stdio.h>命令告诉处理器读取系统头文件stdio.h的内容,并把它直接...

    WindSun
  • Java面向对象练习

    1、定义长方形类,含:   属性:宽、高(整型);   方法:求周长、面积;   构造方法3个:(1)无参——宽、高默认值为1;(2)1个参数——宽、高均为参数...

    lizelu
  • 聊聊flink的InternalTimeServiceManager

    flink-streaming-java_2.11-1.7.0-sources.jar!/org/apache/flink/streaming/api/oper...

    codecraft
  • 聊聊flink的InternalTimeServiceManager

    flink-streaming-java_2.11-1.7.0-sources.jar!/org/apache/flink/streaming/api/oper...

    codecraft
  • Java动态代理机制详解

    在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来...

    Java后端工程师
  • 动态代理模式原理

    在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来...

    老白
  • Java动态代理机制详解

    在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来...

    Java团长
  • ASP.NET.Core中使用AutoMapper

       接下来创建一个类来继承AutoMapper的Profile类与实现刚才创建的标志接口IProfile,并且在构造函数中配置关系映射

    莫问今朝

扫码关注云+社区

领取腾讯云代金券