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

代理模式(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();
    }
}
相关推荐
G***669141 分钟前
算法设计模式:贪心与动态规划
算法·设计模式·动态规划
努力的光头强1 小时前
《智能体设计模式》从零基础入门到精通,看这一篇就够了!
大数据·人工智能·深度学习·microsoft·机器学习·设计模式·ai
top_designer16 小时前
Substance 3D Stager:电商“虚拟摄影”工作流
人工智能·3d·设计模式·prompt·技术美术·教育电商·游戏美术
lapiii35817 小时前
[智能体设计模式] 第11章:目标设定与监控模式
人工智能·设计模式
在未来等你20 小时前
AI Agent设计模式 Day 7:Tree-of-Thoughts模式:树形思维探索
设计模式·llm·react·ai agent·plan-and-execute
烤麻辣烫21 小时前
23种设计模式(新手)-5里氏替换原则
java·学习·设计模式·intellij-idea·里氏替换原则
g***B73821 小时前
前端组件设计模式,复用与扩展
前端·设计模式
桦说编程1 天前
如果让我从头再来学习并发编程
java·设计模式·性能优化
明洞日记1 天前
【设计模式手册006】建造者模式 - 复杂对象的优雅构建之道
java·设计模式·建造者模式
ZHE|张恒1 天前
设计模式(二)工厂方法模式 — 把创建权限下放给子类,像“可扩展的生产线”
java·开发语言·设计模式