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

代理模式(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();
    }
}
相关推荐
阿闽ooo7 小时前
外观模式:从家庭电源控制看“简化接口“的设计智慧
c++·设计模式·外观模式
Geoking.9 小时前
【UML】面向对象中类与类之间的关系详解
设计模式·uml
希望_睿智15 小时前
实战设计模式之中介者模式
c++·设计模式·架构
有一个好名字20 小时前
设计模式-观察者模式
观察者模式·设计模式
青柠代码录21 小时前
【设计模式】A1-单例模式
单例模式·设计模式
阿闽ooo1 天前
深入浅出适配器模式:从跨国插头适配看接口兼容的艺术
c++·设计模式·适配器模式
Kiyra1 天前
WebSocket vs HTTP:为什么 IM 系统选择长连接?
分布式·websocket·网络协议·http·设计模式·系统架构·wpf
山沐与山2 天前
【设计模式】Python责任链模式:从入门到实战
python·设计模式·责任链模式
繁星星繁2 天前
【项目】基于SDK实现的智能聊天助手(使用api接入deepseek)------(二)
c++·设计模式·学习方法