“代理模式”的应用

AI原生应用开发秘籍:代理模式最佳实践 真正的AI原生应用不是调用几个API做界面包装,而是构建能像人类一样“思考-行动-学习”的智能体。本文聚焦“代理模式”这一核心设计模式,覆盖从概念原理到实战落地的全流程,帮助开发者掌握AI原生应用的底层架构设计。本文将按照“概念-原理-实战-场景”的逻辑展开:先用“万能管家”的故事引出代理模式;再拆解AI代理的核心组件(大脑、工具箱、笔记本、规划师);接着用Python代码实现一个智能客服代理;最后结合电商、教育、运维等真实场景,讲解代理模式的落地技巧。AI原生应用。 阅读详情
代理模式的工作原理

可以通过引入一个新的对象,来实现对真实对象的操作或者将新的对象作为真实对象的一个替身。即代理对象。它可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。。


代理模式的 UML 类图如下:

代理模式包含如下角色:

抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。


应用实例:

用代理模式设计房屋租赁中介的模拟程序
模拟如下要求:租房者和出租者都通过房屋中介来互相选择,将他们的要求简化为每间房多少钱。


类图:



源代码:

1. 抽象主题角色AbstractPrice:

namespace PriceSample
{
    interface AbstractPrice
    {
        void SalePrice();
        void BuyPrice();
        void setLevel(int level);
    }
}
2. 真实主题角色RealPrice:

namespace PriceSample
{
    class RealPrice : AbstractPrice
    {
        public void SalePrice()
        {
            Console.WriteLine("这间房出租者卖***万元");
        }
        public void BuyPrice()
        {
            Console.WriteLine("租房者想买一间房间为****左右的房");
        }
        public void setLevel(int level)
        {
 
        }
    }
}

3. 代理主题角色PriceProxy:

namespace PriceSample
{
    class PriceProxy : AbstractPrice 
    {
        private RealPrice price = new RealPrice(); //维持一个对真实主题的引用
        private int level; 

        public void setLevel(int level)
        {
            this.level = level;//0是租房者,1是出租者,
        }

        public void SalePrice()
        {
            if (0 == level)
            {
                Console.WriteLine("对不起,您无法选择买房屋"); 
            }
            else if (1 == level)
            {
                price.SalePrice();
            }
        }

        public void BuyPrice()
        {
            if (1 == level)
            {
                Console.WriteLine("对不起,您无法选择卖房屋");
            }
            else if (0 == level)
            {
                price.BuyPrice();
            }
        }

    }
}

4.辅助代码XML文件 App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="proxy" value="PriceSample.PriceProxy"/>
  </appSettings>
</configuration>

5.客户端测试类Client:

namespace PriceSample
{
    class Client
    {
        static void Main(string[] args)
        {
            //针对抽象目标接口编程
            AbstractPrice price;
            //读取配置文件
            string proxy = ConfigurationManager.AppSettings["proxy"];

            //反射生成对象
            
            price = (AbstractPrice)Assembly.Load("PriceSample").CreateInstance(proxy);

            price.setLevel(0);//0是租房者,1是出租者
            price.SalePrice();
            price.BuyPrice();

            Console.Read();
        }
    }
}

运行结果:






深入解析iOS中MVC模式与代理模式的应用 本文还有配套的精品资源,点击获取 简介:本文深入探讨了iOS开发中MVC设计模式和代理模式的重要性及使用方法。MVC模式将应用分为模型(Model)、视图(View)和控制器(Controller)三个部分,而代理模式提供了一种灵活的接口定义,用于组件间通信。文章以"MyMvcDemo"项目为例,详细展示了如何在实际iOS项目中应用这两种模式,以及Xcode项目结构的相关知... 阅读详情

相关推荐

Proxy代理模式经典实例(绝对OOP)

Proxy代理模式的经典实例(很有面向对象思想哦)。快速学会Proxy代理模式.

七个结构型模式7:代理模式-Proxy Pattern【学习难度:★★★☆☆,使用频率:★★★★☆】

安抚

JackZhangNJU的专栏 833

ARM CMSIS DAP源码分析(二)

今天分析的是RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)和RDDI_DAP_SetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)这两个函数。 以RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)为例,代码如下:

pengxiao618的专栏 7977

设计模式之代理模式

代理模式 所有代码地址: https://gitee.com/zyxscuec/Design-pattern.git 文章目录代理模式(1) 概念(2)适用场景(3)代码示例1. 静态代理模式2. 动态代理模式(4) 模式在源码中的体现(5)代理模式的优缺点(6) 动态代理模式和静态代理模式的区别 (1) 概念 代理模式(ProxyPattern)的定义也非常简单,是指为其他对象提供一种代理,以控制对这个对象的访问。 代理对象在客服端和目标对象之间起到中介作用,代理模式属于结构型设计模式。 (2)适用场景

子冉冰清的博客 893

机器视觉/将HIK海康面阵相机连接Halcon软件

本文简述了如何将海康面阵相机连接到Halcon软件中进行实时取图的过程。

Dahe.qu 4866

从频谱分析到硬件加速:用ZYNQ-7020+FFT IP核实现实时信号处理的完整方案

本文详细介绍了如何利用ZYNQ-7020和FFT IP核实现实时信号处理的完整方案,涵盖系统架构设计、硬件加速实现及性能优化。通过异构计算架构,该方案将1024点FFT处理延迟压缩至28μs,显著提升工业自动化和无线通信等领域的实时频谱分析效率。

weixin_33704234的博客 467

什么是代理模式,有哪些应用?

代理模式是一种结构设计模式,它允许通过创建代理对象来控制对其他对象的访问。代理对象充当原始对象的接口,客户端通过代理对象间接地访问原始对象,并可以在访问过程中添加额外的逻辑或控制。代理模式的主要目的是通过引入代理对象,为原始对象提供一层间接访问的方式,以实现对原始对象的控制、保护或增强。他的常用场最有以下几个: 1.远程代理:在分布式系统中,代理模式可用于代理远程对象。远程代理隐藏了远程对象的实际实现细1、3节,使客户端可以像访问本地对象一样访问远程对象。如Dubbo的实现就是用到了代理模式。2、动态代理

zhangjiaming_zjm的博客 1177

LatentSync:开源数字人唇形同步技术的实战部署与优化指南

本文详细介绍了开源数字人唇形同步工具LatentSync的实战部署与优化全流程。从核心原理(潜在扩散模型与TREPA技术)解析,到手把手完成环境搭建、模型获取及首次推理。文章深入探讨了自定义素材处理、关键参数调优(如guidance_scale),并提供了显存不足、人脸检测失败等常见问题的解决方案与性能优化技巧,旨在帮助用户高效部署并提升生成效果。

9o8p7i6u5y的博客 1007

【设计模式】代理模式-原理、实现以及应用场景

代理模式(Proxyy)就是在不改变原始类(或叫做被代理类)代码的情况下,通过引入代理类来给原始类附加功能。

masetLI的博客 3783

IPMItool 控制风扇转速

然后手动设置风扇,最后一位0x1e为设置30%的转速(16进制)。最后4位 0x0f 表示15%,0x0a,表示10%,不建议小于10%,因为10%已经很静音了 如果再小怕不能控温,烧毁硬件。首先停止服务器的自动风扇控制,最后一位0x00表示停止自动风扇控制,0x01为开启自动风扇控制。首先开启主板上的ipmi 设置好 用户名密码。此过程可以在网上搜索,有很多的资料可以参考。解压只有在目录里面有ipmltool。下面是一些常用的修改温度命令。

m0_37970303的博客 5059

OpenSees入门指南:从零开始的环境配置与TCL脚本实战

本文提供了一份详细的OpenSees入门指南,涵盖从零开始的环境配置到TCL脚本实战的全过程。文章重点讲解了OpenSees的安装步骤、环境变量设置,并推荐了高效的VS Code集成开发环境配置方法。通过一个简支梁分析的完整TCL脚本示例,手把手引导读者完成第一个非线性有限元分析,帮助土木工程与结构工程领域的研究者与学生快速上手这一强大的开源分析工具。

weixin_28829339的博客 336

【代理模式使用场景】

是结构型设计模式,引入一个对象控制对另一个对象的访问。代理对象在客户端和目标对象之间起到中介的作用,它可以在不改变目标对象的情况下,为目标对象添加额外的功能或者控制对目标对象的访问。为一个位于不同地址空间的对象提供本地代表,隐藏网络通信的细节。首先确定远程对象提供的服务,定义一个接口,该接口描述了远程对象能够执行的方法。根据需要创建开销很大的对象,延迟对象的创建直到真正需要的时候。通过它来存放实例化需要很长时间、真实对象创建很耗费系统资源或者根本不存在的对象的引用。确定被代理对象的行为,定义一个接口。

严文文 Chris 1265

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube

本教程基于群晖的NAS设备DS423+的docker功能进行搭建,DSM版为 7.2.1-69057 Update 5。MetaTube是一个媒体服务器插件,主要用于Emby和Jellyfin媒体服务器。它的主要功能是从互联网上抓取内容并响应 JSON 数据,然后通过预安装的 MetaTube 插件请求服务器并下载相应的元数据,以与 Jellyfin/Emby 服务器配合使用。使用 MetaTube 的步骤大致如下:部署后端:首先,需要部署一个名为​ 的后端 API 服务器来抓取内容。

小小笔记大大用处 1万+

关于代理模式

Java代理模式 核心思想 :我不行就找别人 不勉强自己 Java中典型的代理模式:SpringAOP HIbernate数据查询 代理模式分类:静态代理和动态代理 静态代理: 聚合方式:将目标类作为代理类的成员变量 使用构造器将目标类注入 要求代理类和目标类实现相同接口 //公共接口 package com.briup.Proxy.Static; public...

编程者的成长之路 373

openGauss学习笔记-280 openGauss性能调优-实际调优案例09-修改启动参数解决TPCC大幅度波动

openGauss学习笔记-280 openGauss性能调优-实际调优案例09-修改启动参数解决TPCC大幅度波动280.1 现象描述280.2 优化分析 openGauss学习笔记-280 ope

超哥的博客 308

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

代理模式(Proxy Pattern)详解:以延迟加载图片为例

代理模式为其他对象提供一种代理以控制对这个对象的访问。常见的几种代理有:虚拟代理:根据需要创建开销大的对象(比如图片加载)。保护代理:控制访问权限。远程代理:为不同地址空间的对象提供局部代表。特点描述延迟加载图片只在真正需要时才创建,节省资源隐藏细节客户端无需关心加载逻辑,只调用display()即可易扩展可在代理中添加缓存、权限控制、日志记录等功能图像、视频、音频的懒加载远程调用接口的延迟访问安全控制,如保护资源的访问对资源访问进行监控或统计代理模式提供了一种。

keshi12354的博客 752

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JAVA设计模式之代理模式

【代理模式应用场景举例】 比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OOP编...

u012957549的博客 2702

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

白话设计模式之(13)代理模式:资源访问的“智能调控器”

大家好!在技术学习的道路上,我始终相信分享能让我们共同成长,一起攻克各种技术难题。今天,咱们深入探讨设计模式中的代理模式,它就像一个“智能调控器”,在资源访问过程中巧妙地优化资源利用、控制访问流程。希望通过这篇博客,大家能轻松理解并熟练运用这个强大的设计模式。

wj_rdk的博客 1073

结构型模式:代理模式

代理模式是一种结构型设计模式,通过创建一个代理对象来控制对真实对象的访问。代理模式的核心思想是引入一个中间层(代理),在客户端和真实对象之间进行协调。代理模式的主要应用场景包括控制访问、延迟加载、增加功能和远程访问等。常见的代理类型包括静态代理、动态代理、远程代理、保护代理和虚拟代理。静态代理在编译时确定代理关系,而动态代理则在运行时动态生成代理对象。代理模式在实际生活中有广泛应用,如明星与经纪人、网购平台与生产厂家、律师与当事人等关系。在编程中,代理模式常用于优化资源管理,如图片加载器中的延迟加载,避免一

Luck_ff的博客 729

代理模式(ProxyPattern)

代理模式(ProxyPattern) 代理模式 为其他对象提供一种代理以控制对这个对象的访问 远程代理,也就是为一个对象在不同的地址控件提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实 虚拟代理,根据需要创建开销很大的对象,通过他来存储实例化需要很长时间的真是对象 安全代理 用来控制真实对象访问时的权限 智能指引 指当调用真实的对象时,代理处理另外一些事情 模式动机 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户

Sharker_Blog的博客 583

代理模式

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 介绍 意图:为其他对象提供一种代理以控制对这个对象的访问。 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者...

ThinkWon的博客 7058

代理模式 (ProxyPattern)

文章目录代理模式 (ProxyPattern)代理模式的定义代理模式的优点代理模式的缺点代理模式的结构代理模式的实现普通代理强制代理动态代理AOP使用场景 代理模式 (ProxyPattern) 代理模式的定义 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的优点 真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事务,附带的结果就是编程简洁清晰。 具体主题角色是随时都会发生变化的,只要它实现了接口,甭管它如何变化,都逃不脱如来佛的手掌(接口),那我们的代理类完

有问题的请私信或关注v【技术印记】留言 414

设计模式之代理模式(ProxyPattern)

设计模式之代理模式(ProxyPattern) 文章目录设计模式之代理模式(ProxyPattern)一.代理模式(ProxyPattern)二.编程实例1.图片读取案例2.String类访问修饰符[]读写操作区分案例 一.代理模式(ProxyPattern) 代理模式是创建一个代理类,来帮助我们处理真实类,一般来说,这种代理类有点像明星的经纪人,如果你想接触到明星,必须先和他们的经纪人打交道。...

Worthy_Wang的博客 476

java设计模式之 代理模式【Proxy Pattern】 详解

首先我们举个例子说明一下什么是策略模式: 什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道 被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被 代理的人能干活呀。 比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时这样的: 先定义一种类型的女人: package com.cbf4lif...

蛋蛋淡淡定的庄园 299
上一篇: 设计启动画面窗体
下一篇: 栈的应用
VIProgram
博客等级 码龄11年 97粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值