我学会了,代理模式

简介: 代理模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。

前言

代理模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。

代理模式

应用场景:用作业务的中间层来处理,会提供功能相关的全新接口,这些功能接口是基于原始的功能进行再次处理得来的。比如拦截器、过滤器、缓存等等。对数据源的读写操作都会先通过中间这一层,中间这一层就是代理,所以一般可以在代理这里设置关卡,比如监控、统计、鉴权、限流、日志、缓存等等。

理解:类、对象的结构和使用解耦,代理模式可以通过继承的方式也可以通过静态借用的方式,也可以使用动态借用的方式。代理是中间层,任何操作都要经过这个中间层,有了这个中间层就可以有很多的操作。中间层一般都会对外屏蔽目标,目标对外是不可见的。

namespace struct_mode_02 {

    interface SignAContract {

        signAContract (): void
    }

    //#region 
    
    // 产品类
    class SuperStar implements SignAContract {
        signAContract(): void {
            console.log('—————— 签约 ——————')
        }
    }

    // 代理类:继承
    class StarAgent extends SuperStar {

        signAContract () {
            console.log('—————— 经纪人准备合同 ——————')
            super.signAContract()
            console.log('—————— 签约完毕 ——————')
        }
    }

    // 代理类:借用
    class StarAgent2 implements SignAContract {

        superStar: SignAContract = new SuperStar()

        signAContract(): void {
            console.log('—————— 经纪人准备合同 2——————')
            this.superStar.signAContract()
            console.log('—————— 签约完毕 2——————')
        }
    }

    // 代理类:动态代理
    class StarAgent3 implements SignAContract {

        superStar?: SignAContract

        signAContract(): void {
            if (!this.superStar) {
                console.log('当前经济人未签约任何明星。')
                return
            }

            console.log('—————— 经纪人准备合同 3——————')
            this.superStar.signAContract()
            console.log('—————— 签约完毕 3——————')
        }

        setStar (star: SignAContract): SignAContract {
            this.superStar = star

            return this
        }
    }

    // 使用 1:继承
    new StarAgent().signAContract()

    // 使用2:代理借用
    new StarAgent2().signAContract()

    // 使用3:动态代理
    new StarAgent3().setStar(new SuperStar()).signAContract()

}
目录
相关文章
|
7天前
|
人工智能 运维 安全
|
5天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
607 21
|
12天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
970 110
|
6天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。