《设计模式》代理模式

1.代理模式定义

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

1.1 UML图:

  • Subject(主题接口) :定义了真实对象和代理对象的共同接口。
  • RealSubject(真实主题类) :定义了代理类所代表的真实对象,通常实现了Subject接口。
  • Proxy(代理类) :持有RealSubject的引用,并在请求传递给RealSubject之前或之后进行一些操作。

1.2 核心代码:

java 复制代码
public class DemoCode {

    public static void main(String[] args){

        System.out.println("**********************************************");
        System.out.println("代理模式");
        System.out.println();


        Proxy proxy = new Proxy();
        proxy.request();

        System.out.println();
        System.out.println("**********************************************");
    }
}

//ISubject接口
interface ISubject{
    void request();
}

//RealSubject类
class RealSubject implements ISubject {

    public void request(){
        System.out.println("真实的请求。");
    }

}

//Proxy类
class Proxy implements ISubject{

    private RealSubject rs;

    public Proxy(){
        this.rs = new RealSubject();
    }

    public void request(){
        this.rs.request();
    }
}

执行结果:

2. 代理模式的优缺点;

优点:

  • 提供了对真实对象的控制,可以增加额外的功能,比如访问控制、缓存、延迟加载、日志记录等等。
  • 通过动态代理可以减少代码冗余,提高代码的灵活性和可扩展性。

缺点:

  • 增加了系统的复杂度,因为每个真实对象都需要有一个代理类来配合工作。
  • 如果代理层次过多,可能会影响性能,尤其是动态代理在性能上会有一定的损耗。

应用场景:

1.延迟加载:当一个对象的创建成本非常高,且不一定每次都需要使用该对象时,可以通过代理来控制对象的创建时机,避免不必要的资源浪费。

2.访问控制:通过代理类可以控制对原对象的访问权限,只有在满足特定条件下才允许访问。

3.远程代理:当对象在远程服务器上时,可以通过代理类来模拟远程对象的行为。

4.日志记录和性能监控:在代理类中可以加入日志记录、性能监控等功能,不需要修改真实对象的代码。

3. 总结

为其他对象提供一种代理以控制对这个对象的访问

4.参考

相关推荐
o0向阳而生0o3 小时前
93、23种设计模式之抽象工厂模式
设计模式·抽象工厂模式
Tadas-Gao4 小时前
Java设计模式全景解析:从演进历程到创新实践
java·开发语言·微服务·设计模式·云原生·架构·系统架构
饕餮争锋14 小时前
设计模式笔记_行为型_观察者模式
笔记·观察者模式·设计模式
我命由我1234517 小时前
软件开发 - 避免过多的 if-else 语句(使用策略模式、使用映射表、使用枚举、使用函数式编程)
java·开发语言·javascript·设计模式·java-ee·策略模式·js
long31617 小时前
java 策略模式 demo
java·开发语言·后端·spring·设计模式
汤姆大聪明18 小时前
【软件设计模式】前置知识类图、七大原则(精简笔记版)
笔记·设计模式
饕餮争锋1 天前
设计模式笔记_行为型_策略模式
笔记·设计模式·策略模式
易元1 天前
模式组合应用-桥接模式(一)
后端·设计模式
是2的10次方啊1 天前
🕺 行为型设计模式:对象协作的舞蹈家(中)
设计模式