首页 > 其他分享 >[设计模式]代理模式

[设计模式]代理模式

时间:2023-03-23 21:07:12浏览次数:30  
标签:void 代理 模式 public source 设计模式 method before


代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。先来看看关系图:

 

根据上文的阐述,代理模式就比较容易的理解了:

原对象的接口和实现类:


public interface Sourceable {  
    public void method();  
}


public class Source implements Sourceable {  
  
    @Override  
    public void method() {  
        System.out.println("the original method!");  
    }  
}



代理类也实现原对象的接口,内部拥有原对象作为成员变量


public class Proxy implements Sourceable {  
  
    private Source source;  
    public Proxy(){  
        super();  
        this.source = new Source();  
    }  
    @Override  
    public void method() {  
        before();  
        source.method();  
        atfer();  
    }  
    private void atfer() {  
        System.out.println("after proxy!");  
    }  
    private void before() {  
        System.out.println("before proxy!");  
    }  
}



测试:

public class ProxyTest {  
    public static void main(String[] args) {  
        Sourceable source = new Proxy();  
        source.method();  
    }  
}

输出:

before proxy!
 the original method!
 after proxy!

代理模式的应用场景:

如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:

1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。

2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。

使用代理模式,可以将功能划分的更加清晰,有助于后期维护!

标签:void,代理,模式,public,source,设计模式,method,before
From: https://blog.51cto.com/u_6813689/6145934

相关文章

  • [设计模式]桥接模式(Bridge) DriverManager
    将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,......
  • IU8689带主从模式,145W单声道&2X75W立体声D类音频功放
    IU8689E是一款单声道最高可输出145W,立体声2×75WD类音频放大器;这款器件在顶层设计了散热焊盘,焊盘上连接散热器后在供电电压24V的情况下,最大可以输出2×75W的连续功率;通过主......
  • mac terminal设置网络代理
    我的mac浏览器是可以上github了,但是terminal怎么设置都不走代理(包括把整个无线网都设置为走代理,还是不通),curl https://github.com 不通,后来查了下,有人说terminal在mac设......
  • 内网横向之代理搭建
    最近在学习过程中涉及到了内网横向的代理搭建方面,那就顺便写个博客稍作记录一下吧~0x00涉及知识和工具1.socks采用socks协议的代理服务器就是SOCKS服务器,是一种通用的......
  • ASEMI代理NXP汽车芯片MCIMX6S5DVM10ACR
    编辑-Zi.MX6Solo/6DualLite消费品应用处理器MCIMX6S5DVM10ACR处理器代表了以多媒体为重点的集成产品的最新成就,提供了低成本的高性能处理以及低功耗的优化。 该处理......
  • PCF7939MA/CABC0800-ASEMI代理NXP汽车芯片
    编辑-ZNXP汽车芯片PCF7939MA/CABC0800参数描述:型号:PCF7939MA/CABC0800制造商:NXPSemiconductors种类:NFC/RFID标签和应答器存储容量:456b工作频率:125kHz最大工作温......
  • (二十三)责任链模式
    1.概述职责链模式(ChainofResponsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到......
  • 【0基础学爬虫】爬虫基础之代理的基本使用
    大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易......
  • Spring Boot 中的 AOP,到底是 JDK 动态代理还是 Cglib 动态代理?
    好啦,开始今天的正文。大家都知道,AOP底层是动态代理,而Java中的动态代理有两种实现方式:基于JDK的动态代理基于Cglib的动态代理这两者最大的区别在于基于JDK的......
  • 责任链模式
    职责链可以将请求的处理者组织成一条链,并将请求沿着链传递,如果某个处理者能够处理请求则处理,否则将该请求交由上级处理。所以责任链模式有以下几个优点:降低耦合度,将请......