![]() |
1
264
下面是我的联合收割机 Federico's John's 答案:
这个
当我们有:
重构层次结构,如:
|
![]() |
2
237
桥接模式是一个古老建议的应用,“宁可组合也不要继承”。 当您必须以相互正交的方式对不同的时间进行子类化时,它就变得很方便了。假设您必须实现彩色形状的层次结构。你不会用矩形和圆形来划分形状的子类,然后用红色矩形、蓝色矩形和绿色矩形来划分矩形的子类,而用圆形来划分矩形的子类,对吗?你更愿意说每个形状 有 |
![]() |
3
223
什么时候:
重构到:
|
![]() |
4
79
Bridge pattern Wikipedia entry composite 的 Template Strategy 模式。 在桥接模式中,适配器模式的某些方面是常见的。然而,引用 this article
|
![]() |
5
31
根据我的经验,桥接是一种经常重复出现的模式,因为它是解决方案 域中有两个正交维度 还有一个建议:始终考虑设计模式 从概念的角度 ,而不是从实现的角度。从正确的角度来看,桥接器不能与适配器混淆,因为它们解决了一个不同的问题,而且组合优于继承并不是因为它本身,而是因为它允许单独处理正交关注点。 |
![]() |
6
30
我看到的解释是,当您试图统一某些不兼容类的接口时,会使用适配器 . 适配器的功能是作为一种转换器,转换到可以考虑的实现中 . 而桥接模式用于更可能是新域的代码。您正在设计网桥,以便为需要更改的实现提供抽象接口,但也定义了这些实现类的接口。 设备驱动程序是一个经常被引用的桥接示例,但如果您为设备供应商定义接口规范,我会说它是一个桥接,但是如果您使用现有设备驱动程序并创建包装类来提供统一接口,它是一个适配器。 因此,在代码方面,这两种模式非常相似。从商业角度看,它们是不同的。 |
![]() |
7
23
意图 桥 适配器
在以下情况下使用桥接模式:
@JohnSonmez的回答清楚地表明了桥接模式在减少类层次结构方面的有效性。 您可以参考下面的文档链接,通过代码示例更好地了解桥接模式 适配器模式 :
与UML图和工作代码相关的SE问题: Difference between Bridge pattern and Adapter pattern 有用的文章:
桥接模式将抽象与实现分离,以便两者可以独立变化。它是通过组合而不是继承实现的。 Wikipedia中的桥接模式UML:
真实单词用例: 使不同的车辆同时具有手动和自动档位系统。 示例代码:
说明:
桥接模式的用例 :
|
![]() |
8
9
我在工作中使用了桥接模式。我在C++中编程,通常称为pIMPL习惯用法(实现指针)。看起来是这样的:
在这个例子中
另一个优点是您可以定义
|
![]() |
9
7
输出为:
请注意,可以轻松地将新颜色和形状添加到系统中,而不会由于排列而导致子类爆炸。 |
![]() |
10
1
现在,由于必须以特定的方式处理每个源,因此您决定专门化每个任务类型:
最后你上了13节课。添加任务类型或源类型具有挑战性。通过将任务(抽象)与源(这是一个实现问题)解耦,使用桥接模式可以产生更易于维护的内容:
添加任务类型或源现在要容易得多。 注意:大多数开发人员不会预先创建13类层次结构来处理这个问题。但是,在现实生活中,您可能事先不知道源和任务类型的数量;若您只有一个源和两个任务类型,那个么您可能不会将任务与源解耦。然后,随着新的源和任务类型的添加,总体复杂性会增加。在某个时刻,您将进行重构,并且,大多数情况下,最终会得到一个类似于桥接的解决方案。 |
![]() |
11
0
对我来说,我认为它是一种可以交换接口的机制。在现实世界中,您可能有一个可以使用多个接口的类,Bridge允许您交换。 |
![]() |
12
-5
|
![]() |
v.oddou · 设置哈希表和哈希集键之间的差异 7 年前 |
|
RiM · 如何在适配器中使用毕加索,而不使用片段中的上下文 7 年前 |
![]() |
abc · 使用自定义适配器视图时,如何使listview可单击? 7 年前 |
![]() |
LSikh · 将自定义对象设置为微调器并显示特定特性 7 年前 |
![]() |
Ravi Parmar · 回收器视图数据未得到更新? 7 年前 |
![]() |
Eyad Mufti · 如何打印完整列表视图(android) 7 年前 |