我学会了,桥接模式

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

前言

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

桥接模式

应用场景:一个产品有多个维度的变化时,这个时候组合的效果高于继承时,可以将多个维度抽离出来,让不同的维度抽象成不同的功能,并且这样的功能还能够独自扩展,最终通过借用的方式组合它们到一起,从而达到抽象与实现解耦的目的。

理解:类、对象的结构和使用解耦,可以通过借用的方式,任意的切换功能,只要组织好结构即可。功能类可以自己独立扩展,比如爱情的滋味应该也有很多种,酸甜苦辣咸等等等。然后产品也能有很多种,比如不同的性别除了男人和女人,还可以是别的性别,哈哈哈,人类似乎有56种性别嘞。和建造者模式不同的是,它不是用于创建对象,而是用特定的结构来扩展功能,并让抽象和具体的实现解耦。比如 约会 与 爱情的感受、性别 与 不同性别的人。都是通过特定的结构组织方式来完成的。

namespace struct_mode_01 {

    // 约会
    interface IDating {
        say(): string
    }

    // 功能类

    class GoodLove implements IDating {
        say(): string {
            return '【甜的爱情】留在你身边,陪你。人间相伴,共赴天涯海角。'
        }
    }

    class BadLove implements IDating {
        say(): string {
            return "【变质的爱情】太差了,有机会换一个吧。分手前得搞点实惠的,那房子不错。"
        }
    }

    // 性别
    interface IGender {
        setFeel(feel: IDating): IGender
        love(): IGender
    }

    // 产品类

    class Man implements IGender {
        
        private feel: IDating

        constructor(feel: IDating) {
            this.feel = feel
        }

        setFeel(feel: IDating): IGender {
            this.feel = feel

            return this
        }

        love(): IGender {
            console.log(`男人觉得:${this.feel.say()}`)

            return this
        }
    }

    class Woman implements IGender {

        private feel: IDating

        constructor(feel: IDating) {
            this.feel = feel
        }

        setFeel(feel: IDating): IGender {
            this.feel = feel

            return this
        }

        love(): IGender {
            console.log(`女人觉得:${this.feel.say()}`)

            return this
        }
    }

    new Man(new GoodLove()).love().setFeel(new BadLove()).love()
    new Woman(new GoodLove()).love().setFeel(new BadLove()).love()

}
目录
相关文章
|
人工智能 Java 测试技术
就AI 基础设施的演进与挑战问题之ZooKeeper的稳定性提升配置优化的问题如何解决
就AI 基础设施的演进与挑战问题之ZooKeeper的稳定性提升配置优化的问题如何解决
104 2
|
文字识别 Python
用python中的pytesseract实现文字识别的教程
用python中的pytesseract实现文字识别的教程
411 0
|
算法 Python 容器
leetcode 2 Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit.
1040 0
|
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)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。