gpt4 book ai didi

oop - 策略与桥梁模式

转载 作者:行者123 更新时间:2023-12-03 08:14:24 25 4
gpt4 key购买 nike

我知道以前有人问过这个问题(例如 What is the difference between the bridge pattern and the strategy pattern? )。

但是,有人可以使用明确的示例来解释,有什么区别以及在哪种情况下必须选择一个而不是另一个?更少的概念理论,更实际的“现实生活”场景将受到赞赏。

最佳答案

我可以说这很难解释。许多使用它并理解它的人很难向新手解释它。

对于像我这样以类比方式思考的人:

策略模式

所以战略是一种一维的概念。考虑一个可供选择的一维策略数组。

示例 1:管道工的工具

策略模式就像一个管道工,他拥有各种工具来疏通管道。每次工作都是一样的;这是为了疏通管道。但他选择完成这项工作的工具可能会因情况而异。也许他会尝试一个,如果这不起作用,他会尝试另一个。

在这个类比中,“疏通管道”是实现策略之一的方法。 Snake Brush、Power Auger 和 Draino 是具体的策略,而水管工是包含该方法的类(在大多数图中标记为“上下文”)。

enter image description here

示例 2:多头 Screwdriver

或者您可以想到多位 Screwdriver 上的可互换位。
它们旨在在运行时进行更改以适应手头的工作,即搞砸一些东西。

enter image description here

桥接模式

所以桥是一个二维的概念。考虑一维(行)是需要实现的方法列表,第二维(列)是将实现这些方法中的每一个的实现者。

示例 1:应用程序和设备

桥接模式就像一个人可以通过多种方式进行交流(电子邮件、文本、谷歌语音、电话、Skype)和许多可以通过这些方式进行交流的设备——PC、平板电脑和智能手机电话。

各种通信方式(电子邮件、文本、电话)将是抽象接口(interface)上的方法,我们称之为“CommunicationDevice”。在此模式中,CommunicationDevice 是实现者。这个类比中的每个设备(PC、平板电脑、智能手机)都是实现所有这些方法(电子邮件、文本、电话)的 ConcreteImplementor。

enter image description here

示例 2:odbc 数据库驱动程序和 odbc 函数

另一个现成的桥接示例是 Windows 的 odbc 或 oledb 数据库驱动程序模块。它们都在相同的标准“数据库驱动程序”接口(interface)上实现了各种方法,但它们以不同的方式实现该接口(interface)。即使您使用的是同一个数据库,比如 Sql Server,仍然有不同的驱动程序可以与 Sql Server 通信,尽管在幕后以不同的方式。

示例 3:实现者(列)实现方法(行)

Implementors (columns) implementing methods (rows)

关于oop - 策略与桥梁模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com