首页 > 其他分享 >设计模式-代理模式(Proxy Pattern)

设计模式-代理模式(Proxy Pattern)

时间:2024-07-24 14:31:26浏览次数:12  
标签:真实 动态 对象 Pattern 主题 代理 模式 Proxy 设计模式

设计模式-代理模式(Proxy Pattern)

  概要

  记忆关键字:代理控制

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

  分析:

  1)通过代理类,给对象的行为增加辅助功能的解决方案,就是代理模式

  2)在程序运行时,动态地为被代理对象生成代理类,借助编程语言当中的"反射"特性。

  3)动态代理可以更灵活地适应不同的接口,无需为每个被代理的类都创建一个代理类。代理对象的创建和管理由代理工具类完成,减少了手动编写代理类的工作。

   工厂方法模式结构图如下:

   

    一、能解决什么问题?

   二、涉及的角色

   1. 抽象主题(Subject)

   定义了真实主题和代理主题的共同接口,这样在任何使用真实主题的地方都可以使用代理主题。

   2. 真实主题(Real Subject)

   实现了抽象主题接口,是代理对象所代表的真实对象。客户端直接访问真实主题,但在某些情况下,可以通过代理主题来间接访问。

   3. 代理(Proxy)

   实现了抽象主题接口,并持有对真实主题的引用。代理主题通常在真实主题的基础上提供一些额外的功能,例如延迟加载、权限控制、日志记录等。

   4. 客户端(Client)

  使用抽象主题接口来操作真实主题或代理主题,不需要知道具体是哪一个实现类。

  三、静态代理和动态代理

  1. 静态代理

  在静态代理中,代理类和真实类的关系在编译阶段就已经确定。在编写代理类的时候,需要明确代理哪个具体类,代理类和被代理类之间的关系在编译时就已经确定,因此称为静态代理。

  2. 动态代理

  在动态代理中,代理类是在运行时动态生成的。

  所谓动态代理,就是在程序运行时,动态地为被代理对象生成代理类,这就需要借助编程语言当中的"反射"特性。

  3.分析

- 通过代理类,给对象的行为增加辅助功能的解决方案,就是代理模式

- 在程序运行时,动态地为被代理对象生成代理类,借助编程语言当中的"反射"特性。

- 动态代理可以更灵活地适应不同的接口,无需为每个被代理的类都创建一个代理类。代理对象的创建和管理由代理工具类完成,减少了手动编写代理类的工作。


## 4.代理模式跟装饰器模式的区别
- 相似:代理模式跟装饰器模式都是把原有的类对象作为成员,放在代理类或装饰器类当中去调用,
- 区别:对于原有的类来说,装饰器是"自己人",增强的功能是对自身的增强,而代理是"外人",增强的功能和自身并无直接关系

标签:真实,动态,对象,Pattern,主题,代理,模式,Proxy,设计模式
From: https://www.cnblogs.com/hld123/p/18320826

相关文章

  • 设计模式-抽象工厂模式(Abstract Factory Pattern)
    设计模式-抽象工厂模式(AbstractFactoryPattern)  概要   记忆关键词:抽象接口  定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。  分析:如果待创建的产品非常多,我们不需要为每一个产品类配上一个工厂类,而是可以把这些产品进行分组。抽象......
  • 设计模式-建造者模式(Builder)
    设计模式-建造者模式(Builder)  概要   记忆关键词:类和构造分离  定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。  分析:原型模式就是从一个样板对象中复制出一个内部属性一致的对象。它是在内存中拷贝二进制流,比new一个对象的性能......
  • 设计模式-原型模式(Prototype)
    设计模式-原型模式(Prototype)  概要   记忆关键词:原型实例、拷贝  定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。    分析:原型模式就是从一个样板对象中复制出一个内部属性一致的对象。它是在内存中拷贝二进制流,比new一个对象的性能好很......
  • Java设计模式-单例模式
    Java常用设计模式-单例模式JavaDesignPatterns:创建型模式:工厂方法、抽象方法、建造者、原型、单例结构型模式有:适配器、桥接、组合、装饰器、外观、享元、代理行为型模式有:责任链、命令、解释器、迭代器、中介、备忘录、观察者、状态、策略、模板方法、访问者常用设计模式:......
  • 跟着ChatGPT学习设计模式 - 工厂模式
    1.前言在工作过程中,越发觉得设计模式的重要性。经常会有人说工作5年的人,大学生随便培训1-2月也能做同样的工作,没错,大学生的确可以做。但其写的代码,可维护性、可扩展性、添加新功能时方便还是简单。甚至是软实力的表现,如何沟通、如何推进项目进展、如何做项目排期,其实都是应届生......
  • 设计模式-职责链模式(Chain of Responsibility)
    设计模式-策略模式(ChainofResponsibility)  概要   记忆关键词:传递请求,职责链接  定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链发送请求,直到有一个对象处理它为止。  分析:当客户提交一个请求,请......
  • Java常用设计模式-单例模式
    Java常用设计模式-单例模式JavaDesignPatterns:创建型模式:工厂方法、抽象方法、建造者、原型、单例结构型模式有:适配器、桥接、组合、装饰器、外观、享元、代理行为型模式有:责任链、命令、解释器、迭代器、中介、备忘录、观察者、状态、策略、模板方法、访问者常用设计模式:......
  • 创建型模式-单例设计模式
    一、单例设计模式单例模式(SingletonPattern)是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可......
  • 【设计模式】建造者模式
    设计模式的分类:        创建型模式:这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用new运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。        工厂模式、抽象工厂模式、单例模式、建造者模式......
  • 设计模式-状态模式(State pat)
    设计模式-策略模式(StatePattern)  概要   记忆关键词:状态变成类  定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。  状态模式结构图如下:    一、能解决什么问题?  它主要用来解决对象在多种状态转换时,需要对外输出不同......