[java] 23种设计模式之代理模式

代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。比如我们在租房子的时候会去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。

租房:

java 复制代码
public interface RentInterface {
     void rent();
}

房东租房:

java 复制代码
public class FangDong implements RentInterface {

    @Override
    public void rent() {
        System.out.println("房东租房");
    }
}

中介代理房东租房:房东作为中介的成员变量

java 复制代码
public class Proxy implements RentInterface{

    private FangDong fangDong;

    public Proxy(FangDong fangDong) {
        this.fangDong = fangDong;
    }

    @Override
    public void rent() {
        fangDong.rent();
    }
}

测试,中介租房,实际就是房东租房。

java 复制代码
public class Test {
    public static void main(String[] args) {
        FangDong fangDong = new FangDong();
        RentInterface proxy =new Proxy(fangDong);
        proxy.rent();
    }
}

打印:房东租房

代理模式的应用场景:

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

  1. 修改原有的方法来适应。这样违反了"对扩展开放,对修改关闭"的原则。
  2. 就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。

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

相关推荐
香蕉大香蕉(06敬畏市场)23 分钟前
MySQL 单点详解(01)
java·数据库·mysql·面试·博客·实习
LaughingZhu38 分钟前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion
niucloud-admin1 小时前
NIUCLOUD PHP SAAS上门家政使用文档:服务保障
java·开发语言·php
IT枫斗者枫哥1 小时前
CompletableFuture失败后返回空列表:异常没了,业务含义也变了
java·后端
知识搬运临时工1 小时前
一个模板把 AEM 拖进 Full GC 死亡螺旋:300% CPU、7 GB 堆、310 万行堆栈
java·aws
用户432935928051 小时前
CoAP还是MQTT:1万只Cat.1水表三个月带宽续航实测
java
知守观2 小时前
多模块架构演进:横向分层 vs 纵向领域,13 个真实项目的切分对照
java·后端·微服务
raindayinrain2 小时前
c++设计模式
开发语言·c++·设计模式
Java成神之路-2 小时前
Java String 为什么不可变?和 HashMap 到底有什么关系?
java
paopaokaka_luck2 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts