千家信息网

如何理解设计模式之桥模式

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容介绍了"如何理解设计模式之桥模式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!举个例子桥模式
千家信息网最后更新 2025年02月23日如何理解设计模式之桥模式

本篇内容介绍了"如何理解设计模式之桥模式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

举个例子

桥模式的主要功能也是解耦,把会独立变化的量从整个逻辑中抽离出来,从而节省我们的代码量。我们用奶茶来举个简单的例子。

对于奶茶而言,它的原料往往比较简单,就是糖、水、茶以及奶盖等等。但是制作过程往往大相径庭,珍珠奶茶可能就只是把茶和奶混合加上珍珠,其他的奶茶可能完全不同。

假如我们希望用程序来模拟奶茶制作的整个过程,我们会发现如果我们对每一种奶茶都单独实现一个类是非常麻烦的。因为不同奶茶往往只是制作手法有差别,但是整体的原料以及流程可能都是一样的。所以我们只希望可以单独抽离出制作过程即可,这个时候我们就可以使用桥接模式,说穿了其实非常简单,尤其是在Python当中。

代码实现

这里我们先放出奶茶这个类主体的逻辑,大家估计一看就明白了。

class BubbleTea:     def __init__(self, ice, sugar, tea, cheese, making_api):         self._ice = ice         self._sugar = sugar         self._tea = tea         self._cheese = cheese         self._making_api = making_api      def no_ice(self):         self._ice = 0      def additional_sugar(self):         self._sugar += 5      def additional_cheese(self):         self._cheese += 5      def prepare(self):         self._making_api.make(self._ice, self._sugar, self._tea, self._cheese)

这里的ice、sugar、tea和cheese都是我们日常奶茶当中都会添加的原料,对于奶茶的制作我们往往也会提一些加芝士、去冰以及加糖这些要求,我们也把它们做成了单独的方法,这些也都很好理解。

这里唯一有些需要注意的就是对于奶茶的制作过程,也就是prepare这个方法,其实并不是在BubbleTea这个类当中实现的,而是通过making_api从外界传来的。这里也就是我们bridge模式的应用了,既然处理逻辑是外界传来的,那么它其实就和奶茶这个类解耦了,我们可以在外面自己随意定义这个api的实现方式,也不会有任何影响。如果我们要在BubbleTea这个类内部来实现奶茶的话,要么我们对每一种奶茶实现一个类,要么我们在其中做大量的判断,无论是哪一种情况显然都不太好,会导致代码大量的堆积和臃肿。

最后我们看一下making_api的实现,以及使用示例:

class CheeseTeaAPI:     def make(self, ice, sugar, tea, cheese):         print('cheese tea! cheese: {}, bubbles: 5, sugar: {}, tea: {}, ice: {}'.format(cheese, sugar, tea, ice))   class BubbleTeaAPI:     def make(self, ice, sugar, tea, cheese):         print('bubble tea! sugar: {}, tea: {}, ice: {}'.format(sugar, tea, ice))                   if __name__ == '__main__':      teas = [BubbleTea(0, 5, 3, 0, BubbleTeaAPI()), BubbleTea(2, 5, 2, 4, CheeseTeaAPI())]      for tea in teas:         tea.no_ice()         tea.additional_sugar()         tea.prepare()

如果大家还有困惑的话,不妨再看下代码细节,仔细思考一下。整体来说,bridge模式在Python当中的实现还是比较简单的,最起码比在Java中的实现简单多了。

"如何理解设计模式之桥模式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

奶茶 模式 制作 过程 代码 制作过程 原料 逻辑 设计模式 设计 不同 也就是 例子 内容 只是 外界 就是 情况 整体 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 你的前世档案软件开发 战双帕弥什b站属于什么服务器 小学网络安全周记 亳州软件开发有哪些 怎样缩小数据库窗体 饥荒联机版服务器mod人物 mc我的世界服务器加载 网络安全事件最新消息下线 软件开发项目合作意向书 软件开发项目招标分包原则 小规模会计核算软件数据库类型 数据库设计过程包括6个阶段 软件开发是怎么发展的 组态王数据库时间段怎么没法添加 四川惠普服务器维修系统云主机 sql2008数据库镜像 网络安全有什么罪行 软件开发好的大专学校有哪些 流媒体转发服务器搭建 初中学网络技术有前途吗 敏捷软件开发流行工具 网站服务器挂了 大学生网络安全黑客的案例 单位网络安全保护情况说明 软件开发TPMS 数据库查询cpu 内存消耗 深圳app软件开发哪家强 arma3怎么租服务器 中国网络安全最新研究报告 汕头erp软件开发市场价
0