首页 > 其他分享 >软件设计模式-代理模式

软件设计模式-代理模式

时间:2024-09-22 16:01:28浏览次数:7  
标签:软件设计 request 代理 模式 Proxy realSubject public Subject

代理模式
应用场景:
1.静态代理:
用户希望通过代理类的对象调用真实类的对象的方法,并且希望在调用真实类的对象之前,自定义进行某些操作。
其实想要实现这样的操作有很多种方法,继承,装饰者模式都可以,但是静态代理考虑到只是调用真实类的对象的一个方法而已,没必要使用装饰者模式(将真实类对象作为自己的成员),这样可以将代理类和真实类独立开来。具体做法:让代理类和真实类都实现同一个接口,然后代理类在重写接口的方法时自行添加某些操作。
// 抽象接口
public interface Subject {
void request();
}

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

// 代理对象
public class Proxy implements Subject {
private RealSubject realSubject;

@Override
public void request() {
    if (realSubject == null) {
        realSubject = new RealSubject();
    }
    System.out.println("Proxy: Before request.");
    realSubject.request();
    System.out.println("Proxy: After request.");
}

}

// 客户端
public class Client {
public static void main(String[] args) {
Subject proxy = new Proxy();
proxy.request(); // 客户端只与接口Subject打交道
}
}

2.动态代理:

标签:软件设计,request,代理,模式,Proxy,realSubject,public,Subject
From: https://www.cnblogs.com/torrentgz/p/18425418

相关文章

  • 设计模式之——装饰者模式
    前言:装饰者模式是结构性设计模式之一,其在不必改变类文件及不适用继承的情况下,动态的扩展一个对象的功能。它通过创建一个包装对象(即装饰)来包裹真实的对象。一.定义动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。装饰者模式的结构图:装饰者模......
  • 软件设计模式-装饰者模式
    装饰模式应用场景:最基础用法:当需要对类A的对象添加一些自定义不同的方法时,直接在类A中添加方法不太好!那么需要一个类B继承类A,类B里面增加一个类A的对象作为自己的成员并自定义一个方法Bfunc,再重载类A中的某个方法func,在该方法里面调用自己的Bfunc。高级用法:假设要对男英雄和女......
  • c#代码介绍23种设计模式_03工厂模式
    目录1.工厂方法模式之所以可以解决简单工厂的模式2.使用工厂方法实现的系统,如果系统需要添加新产品时3.从UML图来看4、实现思路1.工厂方法模式之所以可以解决简单工厂的模式是因为它的实现把具体产品的创建推迟到子类中,此时工厂类不再负责所有产品的创建,而只是给出......
  • 动态代理案例
    动态代理是指不改变原有的代码,在运行时利用拦截器进行拦截利用反射增强该方法,降低了代码的耦合性一、常用的动态代理技术JDK代理:基于接口的动态代理技术·:利用拦截器(必须实现invocationHandler)加上反射机制生成一个代理接口的匿名类,在调用具体方法前调用InvokeHandler来......
  • C++ std::call_once 实现单例模式
    #if1#include<iostream>#include<memory>#include<mutex>usingnamespacestd;classSingleton{public:staticSingleton&getInstance(){std::call_once(m_OnceFlag,&Singleton::init);return*m_Insta......
  • 实现单例模式
    对于一些管理的类,且只需要创建一次对象的类我们可以把它设置为单例模式一、c#和unity中不继承MonoBehaviour如何实现单例模式:1.在类中创建改类的静态私有对象并且初始化堆区空间2.提供给外部一个静态的公共属性来获得改静态私有对象(只可以得不允许外部改,防止外部置空)3.写一......
  • 链动3+1滑落模式小程序开发
    链动3+1滑落模式是一种在电商、微商或社交电商领域常用的营销模式,通过用户推荐新用户形成团队结构,并依据团队的发展给予相应的奖励或优惠。在小程序平台上开发链动3+1滑落模式,需要考虑到用户体验、数据安全、奖励机制的实现等多个方面。以下是一些基本的开发步骤和考虑因素:1.......
  • LL学设计模式之最终章
    序学习过好多遍设计模式。感觉还是没学会。面试啥的又说不出来。这是最后一次了。忘了并不代表不会。知道个大概就行了为啥要学设计模式:1:阅读源代码的时候,知道是啥设计模式,就更容易看懂。2:为了写出好的容易扩展的代码。应对各种变化。简单。设计模式有指导原则。设计模式......
  • 在jupyter notebook中取消代理服务器的解决方案
      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学......
  • 增强 React 列表渲染:干净且可重用的模式
    作为react开发人员,我们都遇到过需要渲染数据列表的场景。虽然.map()方法效果很好,但每次渲染列表时重复相同的逻辑可能会让人筋疲力尽,并导致代码重复。幸运的是,有一种更干净、可扩展的方法来处理这个问题,使用可重用组件、高阶组件或自定义挂钩。在本文中,我将分享一种改进react......