美文网首页
代理模式(一)

代理模式(一)

作者: 多彩海洋 | 来源:发表于2019-07-10 11:46 被阅读0次

一、定义
为其它对象提供一种代理,以控制对这对象的访问。

二、类图


proxy.png

三、代理三要素
1.Subject 抽象主题角色(共同接口)

可以是抽象类或者接口,是一个最普通的业务类型定义,无特殊要求。

public interface Subject {
//定义一个方法
public void request();
}
2.RealSubject 具体主题角色(真实对象)

也叫被代理角色。是业务逻辑的具体执行者。

public class RealSubject implements Subject {
//实现方法
public void request() {
// TODO 业务逻辑处理
}
}
3.Proxy 代理主题角色(代理对象)

也叫代理类。负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色去实现,并且在真实主题角色处理完毕前后做预处理和善后操作。

public class Proxy implements Subject {
//要代理哪个实现类
private Subject subject = null;
//通过构造函数传递代理者
public Proxy(Subject subject){
this.subject = subject;
}
//实现接口中定义的方法
public void request() {
this.before();
this.subject.request();
this.after();
}
//预处理
private void before(){
//do something
}
//善后处理
private void after(){
//do something
}
}

四、优点
1.职责清晰

真实角色就是实现实际的业务逻辑,而不需要关心其他非本职工作(例如前处理、后处理),通过代理完成一件事务,结果就是编程简洁清晰。

2.高扩展性

具体的主题角色是随时都可能发生变化的,当需要改变时,通过代理类,我们就可以做到不修改原角色下实现扩展。

五、使用场景
通常用于对原有逻辑进行扩展。比如现在持有二方包的某些类,需要调用其中的某些方法并添加一些方法,例如打印日志等,但是又不方便将这些逻辑直接加在二方包的方法里,那么我们就可以通过使用代理的方式来进行。

扩展:一方包、二方包、三方包是什么?

   一方包:本工程内的各模块的相互依赖

    二方包:公司内部的依赖库,一般指公司内部的其他项目发布的jar包

    三方包:公司之外的开源库,比如apache、google等发布的依赖

也许你现在还觉得很郁闷,为什么要使用代理。但是想想现实世界中,打官司为什么要找个律师?因为你不想参与到中间过程的是是非非,只需要完成自己的答辩,其它诸如事前调查、事后追查都由律师来搞定,这就是为了减轻你的负担。

六、扩展
静态代理和动态代理的介绍,可以参考下一篇 静态代理和动态代理

相关文章

  • 第4章 结构型模式-代理模式

    一、代理模式简介 二、代理模式3个角色 三、代理模式的优点 四、代理模式的实例(游戏代练)

  • 代理模式

    一、什么是代理模式 代理模式(Proxy pattern):代理模式又叫委托模式,是为某个对象提供一个代理对象,并...

  • 理解代理模式

    原创博客地址 简介 代理模式,也叫做委托模式,分为:静态代理动态代理 代理模式也是平时比较常用的设计模式之一,代理...

  • 大话设计模式之代理模式

    代理模式 代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式...

  • GeekBand-C++设计模式-Week2

    代理模式 代理模式的定义 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。代理模式的英文叫做...

  • JAVA代理与动态代理

    代理模式简介 代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就...

  • 设计模式

    单例模式 模板方法模式 工厂模式 代理模式 静态代理 JDK动态代理

  • Android--代理模式和Retrofit源码浅析

    一、代理模式 因为Retrofit用到了动态代理模式,所以先说说代理模式。 1、代理模式的定义 为其他对象提供一种...

  • Android--代理模式和Retrofit源码浅析

    一、代理模式 因为Retrofit用到了动态代理模式,所以先说说代理模式。 1、代理模式的定义 为其他对象提供一种...

  • Java设计模式之代理模式

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

网友评论

      本文标题:代理模式(一)

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