美文网首页Java设计模式
设计模式之代理模式(Proxypattern)

设计模式之代理模式(Proxypattern)

作者: 杨斌_1024 | 来源:发表于2020-04-24 17:00 被阅读0次

代理模式概述

代理模式是一种设计模式,类似让A去做事情,但是客户端通过引用目标对象(A)的代理对象完成对A的方法或行为的执行操作,代理对象可以在自己的方法的内部增强A的行为。

例如:小明开了一个网店,去批发商进货,批发商的货物又是从一个大型超市进的。

这里就是代理模式,小明作为客户(客户端),通过批发商(代理对象)去超市进货物,经过了开车=>付钱=>超市交货=>拿货,小明然后拿到货物。这里的除超市交货,其他行为都是批发商(代理对象)产生,这是所谓的方法增强。

类结构图

本文类图

静态代理

静态代理模型

静态代理的一个特点就是,代理对象的类是显示声明的(需要自己写代理类),在代理类里面使用目标对象的引用。

上图的意思就是:Animal接口有两个实现类Monkey,Person.现在要使用静态代理Animal, 那么先声明一个代理类(StaticProxy),通过这个代理类来生成Animal的代理对象,再一个这个代理类要实现Animal接口,并且里面要有Animal的引用。这样才能引用Animal的方法。

缺点:

只能代理一种类型的对象,如果想要代理其他的类,那么代理类需要不断的去实现目标对象的方法。再一个不符合设计模式的原则,1.开放-封闭原则 2.单一职责

Static Code GitHub Depository

动态代理

动态代理模型

动态代理的一个特点就是不用显式的声明代理类,代理对象是动态生成的(运行期间),并且可代理任何对象。

上图的意思:通过DynamicProxyFactory在运行期间生成代理对象dynamicProxy,而dynamicProxy持有Animal,Machine等向上转型的Object引用(Object target), 通过反射可以执行具体目标实现类的方法,达到动态代理的目的。

代理模式代码:Dynamic Code GitHub Depository

相关文章

  • 设计模式_代理_动态代理

    1.代理模式概述 1.1什么是代理模式 ProxyPattern(即:代理模式)23种常用的面向对象软件的设计模式...

  • 设计模式之代理模式(Proxypattern)

    代理模式概述 代理模式是一种设计模式,类似让A去做事情,但是客户端通过引用目标对象(A)的代理对象完成对A的方法或...

  • 代理模式-ProxyPattern

    前言: 代理模式 代理模式的组成部分 代理接口:代理类和委托类实现的接口 代理类:负责对请求的预处理、过滤,将请求...

  • ProxyPattern代理模式

    代理模式 1.定义 为其它对象提供一种代理,来控制对这个对象的访问 代理模式也叫作委托模式,它可以提供非常好的访问...

  • 【Java设计模式】结构型模式-代理模式

    源代码:代理模式 https://gitee.com/AgentXiao/ProxyPattern转账操作 htt...

  • 无标题文章

    1.代理 1.1概述 1.1.1什么是代理 ​ ProxyPattern(即:代理模式),23种常用的面向对象软件...

  • 设计模式之代理模式

    设计模式之代理模式 10分钟看懂动态代理设计模式(升级篇)-对这篇动态代理模式的思路整理 仿JDK实现动态代理逻辑...

  • 代理模式

    设计模式之代理模式 什么是代理模式? 指的事代理对象为其他对象提供代理以控制对被...

  • Java设计模式之代理模式

    Java设计模式之代理模式 代理模式 静态代理 动态代理 为什么需要代理 通过代理,我们能够不用知道委托人是谁,而...

  • Java代理模式之JDK动态代理

    了解什么是动态代理模式,可参考Java设计模式之代理模式 简介 JDK动态代理是java.lang.reflect...

网友评论

    本文标题:设计模式之代理模式(Proxypattern)

    本文链接:https://www.haomeiwen.com/subject/uqmfwhtx.html