设计模式-结构型模式-代理模式

代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。[DP]

复制代码
// 定义接口
interface Subject {
    void request();
}

// 真实主题对象
class RealSubject implements Subject {
    @Override
    public void request() {
        System.out.println("RealSubject is requested.");
    }
}

// 代理主题对象
class ProxySubject implements Subject {
    private RealSubject realSubject;

    public ProxySubject() {
        // 可以在这里进行初始化操作,如权限验证、日志记录等
    }

    @Override
    public void request() {
        // 在调用真实对象前可以添加一些操作
        System.out.println("ProxySubject is requested.");
        if (realSubject == null) {
            realSubject = new RealSubject();
        }
        // 调用真实对象的方法
        realSubject.request();
        // 在调用真实对象后可以添加一些操作
        System.out.println("After RealSubject is requested.");
    }
}

// 客户端代码
public class ProxyPatternDemo {
    public static void main(String[] args) {
        Subject subject = new ProxySubject();
        subject.request();
    }
}
相关推荐
二哈赛车手29 分钟前
新人笔记---多策略搭建策略执行链实现RAG检索后过滤
java·笔记·spring·设计模式·ai·策略模式
楼田莉子1 小时前
仿Muduo的高并发服务器:Channel模块与Poller模块
linux·服务器·c++·学习·设计模式
qq_三哥啊17 小时前
【mitmproxy】提取 OpenCode 的 API 接口
网络·代理模式
geovindu17 小时前
go: Strategy Pattern
开发语言·设计模式·golang·策略模式
qq_三哥啊18 小时前
【mitmproxy】通过 mitmproxy 的本地捕获代理模式获取 OpenCode 发起的 AI API 请求的详细信息
网络·系统安全·代理模式
嵌入式学习_force1 天前
02_state
设计模式·蓝牙
qcx231 天前
Warp源码深度解析(七):Token预算策略——双轨计费、上下文溢出与摘要压缩
人工智能·设计模式·rust·wrap
Cosolar2 天前
提示词工程面试题系列 - Zero-Shot Prompting 和 Few-Shot Prompting 的核心区别是什么?
人工智能·设计模式·架构
geovindu2 天前
go:Template Method Pattern
开发语言·后端·设计模式·golang·模板方法模式
钝挫力PROGRAMER2 天前
贫血模型的改进
java·开发语言·设计模式·架构