意图
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
别名
Handle/Body
结构
参与者
• Abstraction
— 定义抽象类的接口。
— 维护一个指向I m p l e m e n t o r类型对象的指针。
• RefinedAbstraction
— 扩充由Abstraction定义的接口。
• Implementor
— 定义实现类的接口,该接口不一定要与Abstraction的接口完全一致;事实上这两个
接口可以完全不同。一般来讲,Implementor接口仅提供基本操作,而Abstraction则
定义了基于这些基本操作的较高层次的操作。
• ConcreteImplementor
— 实现Implementor接口并定义它的具体实现。
示例代码
public abstract class Abstraction {
private Implementor impl;
public Implementor getImpl() {
return impl;
}
public void setImpl(Implementor impl) {
this.impl = impl;
}
public Abstraction(Implementor impl) {
this.impl = impl;
}
public abstract void operation();
}
public class RefinedAbstraction extends Abstraction {
public RefinedAbstraction(Implementor impl) {
super(impl);
}
@Override
public void operation() {
getImpl().operation();
}
}
public interface Implementor {
public void operation();
}
public class ConcreteImplementorA implements Implementor {
@Override
public void operation() {
System.out.println("do something");
}
}
public class Client {
public static void main(String[] args) {
Abstraction abstraction = new RefinedAbstraction(new ConcreteImplementorA());
abstraction.operation();
}
}
适用性
• 你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。
• 类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。
• 对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。
• 你想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知道这一点。
效果
分离了接口和具体的实现,将Abstraction与Implementor分离有助于降低对实现部分编译时刻的依赖性,当改变一个实现类时,并不需要重新编译Abstraction类和它的客户程序,甚至可以在运行时刻改变。大大提高了扩展性,Abstraction和Implementor都可以各自独立扩展。
注意:如果Implementor仅有一个实现时候,就不要用该模式了(当然示例代码是用来给个例子的)。
相关模式
Abstract Factory模式可以用来创建和配置一个特定的Bridge模式。
Adapter模式用来帮助无关的类协同工作,它通常在系统设计完成后才会被使用。然而,Bridge模式则是在系统开始时就被使用,它使得抽象接口和实现部分可以独立进行改变。
- 大小: 19.4 KB
分享到:
相关推荐
移动公司吉比特光猫ZXHN G6611路由模式Router改桥接模式Bridge方法详细教程 在这篇教程中,我们将学习如何将移动公司吉比特光猫ZXHN G6611从路由模式(Router)改为桥接模式(Bridge)。这将允许用户使用光猫作为一个...
桥接模式是设计模式中的一种结构型模式,其主要目的是为了分离抽象部分和实现部分,以便两者能够独立地进行...通过学习这些资料,开发者可以更好地理解如何在实际项目中运用桥接模式,提高代码的可维护性和可扩展性。
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛...对于初学者来说,通过学习和实践桥接模式,可以提高软件设计能力,更好地理解面向对象设计原则。
刘伟老师的《设计模式》一书中的桥接模式示例代码,为我们提供了直观的学习材料。 桥接模式的主要组成部分包括抽象接口(Abstraction)、具体抽象类(Concrete Abstraction)、实现接口(Implementor)和具体实现类...
适配器模式(Adapter Pattern)和桥接模式(Bridge Pattern)是两种非常重要的设计模式,它们各自在特定场景下发挥着重要作用。 适配器模式的核心思想是将两个不兼容的接口进行适配,使得原本无法一起工作的类能够...
桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们可以独立进行变化。这种模式的主要目的是将抽象和实现解耦,使得两者可以独立进行扩展。桥接模式的核心结构包括抽象、实现...
2. **桥梁(Bridge)模式**:桥接模式分离了抽象和实现,使得两者可以独立变化。在C#中,它可以用来减少类的继承层次,使系统更具灵活性,易于扩展。 3. **装饰(Decorator)模式**:装饰模式在不改变原有对象接口...
本文将详细介绍电脑信息无线路由器的五种常见工作模式:Router(无线路由模式)、AP(无线接入点模式)、Bridge(桥接模式)、Repeater(中继模式)以及Client(客户端模式)。 1. **无线路由模式 (Router)**:这是...
### Python设计模式详解:Null模式与桥接模式 #### Null模式概述 在软件开发过程中,尤其是在面向对象编程中,我们经常会遇到这样的情况:当我们尝试访问一个对象的某个属性或方法时,该对象可能是`None`(Python...
2. **桥接(Bridge)**:桥接模式将抽象部分与其实现部分分离,使它们可以独立地变化。这样做的目的是为了降低耦合度,使得抽象和实现可以独立进行扩展。 3. **命令(Command)**:命令模式封装了一个请求作为对象...
- **Bridge模式**:桥接模式将抽象部分与它的实现部分分离,使它们可以独立变化,降低了耦合度。 - **Adapter模式**:适配器模式允许两个不兼容的接口协同工作,通过创建一个适配器对象,将原有接口转换为期望的...
6. 桥接模式(Bridge):桥接模式将抽象部分与实现部分分离,使它们可以独立变化。这种模式可以减少类的耦合度,提高系统的灵活性。 7. 组合模式(Composite):组合模式将对象组合成树形结构,允许用户对单个对象...
通过将抽象和实现分离开来,桥接模式可以让你改变一个对象的行为,而无需修改该对象的类。这提高了系统的灵活性,使得抽象和实现可以独立演化。 这些设计模式各有其应用场景和优势,例如: - 工厂模式适用于当你...
同时,文章还介绍了无线路由器的应用模式,包括AP模式、无线客户端模式、点对点桥接模式、点对点桥接模式(适用无线将多个有线局域网连接在一起)和无线中继模式。 1. 使用WDS功能的路由器实现无线桥接 在这个案例...
4. **桥接模式(Bridge)**:桥接模式分离抽象和实现,使得它们可以独立变化。它将抽象部分与实现部分解耦,使得它们可以独立演化。 5. **表达式模式(Expression)**:表达式模式通常用于构建计算表达式,它允许...
6. 桥接模式(Bridge): 桥接模式将抽象部分与实现部分分离,使它们可以独立变化。这提高了系统的灵活性,降低了耦合度。 7. 组合模式(Composite): 组合模式允许你将对象组合成树形结构来表现“整体/部分”...
3. 桥接模式(Bridge): 桥接模式将抽象部分与其实现部分分离,使它们可以独立变化。在ASP.NET中,这可以应用于用户界面和业务逻辑的分离。例如,UI层(如ASP.NET MVC视图)作为抽象,而具体的业务逻辑(如服务层...
6. 桥接模式(Bridge Pattern):桥接模式将抽象部分与实现部分分离,使它们可以独立变化。C#中,可以通过接口和多态性实现这一模式。 7. 组合模式(Composite Pattern):组合模式将对象组织成树形结构,可以表示...
6. 桥接模式(Bridge): Bridge模式将抽象部分与实现部分分离,使它们可以独立变化。这种分离使得两者可以独立地进行扩展,提高了系统的灵活性。 7. 组合模式(Composite): Composite模式将对象组合成树形结构,...