`
iamxi
  • 浏览: 190847 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

学习:桥接模式(Bridge)

阅读更多

意图
将抽象部分与它的实现部分分离,使它们都可以独立地变化。


别名
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方法详细教程 在这篇教程中,我们将学习如何将移动公司吉比特光猫ZXHN G6611从路由模式(Router)改为桥接模式(Bridge)。这将允许用户使用光猫作为一个...

    结构型模式之桥接模式(bridge)

    桥接模式是设计模式中的一种结构型模式,其主要目的是为了分离抽象部分和实现部分,以便两者能够独立地进行...通过学习这些资料,开发者可以更好地理解如何在实际项目中运用桥接模式,提高代码的可维护性和可扩展性。

    设计模式---桥接模式

    桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛...对于初学者来说,通过学习和实践桥接模式,可以提高软件设计能力,更好地理解面向对象设计原则。

    桥接模式java示例代码

    刘伟老师的《设计模式》一书中的桥接模式示例代码,为我们提供了直观的学习材料。 桥接模式的主要组成部分包括抽象接口(Abstraction)、具体抽象类(Concrete Abstraction)、实现接口(Implementor)和具体实现类...

    适配器、桥接模式实例代码

    适配器模式(Adapter Pattern)和桥接模式(Bridge Pattern)是两种非常重要的设计模式,它们各自在特定场景下发挥着重要作用。 适配器模式的核心思想是将两个不兼容的接口进行适配,使得原本无法一起工作的类能够...

    适配器模式和桥接模式共26页.pdf.zip

    桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们可以独立进行变化。这种模式的主要目的是将抽象和实现解耦,使得两者可以独立进行扩展。桥接模式的核心结构包括抽象、实现...

    设计模式学习笔记总结

    2. **桥梁(Bridge)模式**:桥接模式分离了抽象和实现,使得两者可以独立变化。在C#中,它可以用来减少类的继承层次,使系统更具灵活性,易于扩展。 3. **装饰(Decorator)模式**:装饰模式在不改变原有对象接口...

    学习电脑信息无线路由器的五种工作模式

    本文将详细介绍电脑信息无线路由器的五种常见工作模式:Router(无线路由模式)、AP(无线接入点模式)、Bridge(桥接模式)、Repeater(中继模式)以及Client(客户端模式)。 1. **无线路由模式 (Router)**:这是...

    举例讲解Python中的Null模式与桥接模式编程

    ### Python设计模式详解:Null模式与桥接模式 #### Null模式概述 在软件开发过程中,尤其是在面向对象编程中,我们经常会遇到这样的情况:当我们尝试访问一个对象的某个属性或方法时,该对象可能是`None`(Python...

    设计模式源码(适合与参考)

    2. **桥接(Bridge)**:桥接模式将抽象部分与其实现部分分离,使它们可以独立地变化。这样做的目的是为了降低耦合度,使得抽象和实现可以独立进行扩展。 3. **命令(Command)**:命令模式封装了一个请求作为对象...

    设计模式.pdf

    - **Bridge模式**:桥接模式将抽象部分与它的实现部分分离,使它们可以独立变化,降低了耦合度。 - **Adapter模式**:适配器模式允许两个不兼容的接口协同工作,通过创建一个适配器对象,将原有接口转换为期望的...

    设计模式解析,经典设计模式讲解

    6. 桥接模式(Bridge):桥接模式将抽象部分与实现部分分离,使它们可以独立变化。这种模式可以减少类的耦合度,提高系统的灵活性。 7. 组合模式(Composite):组合模式将对象组合成树形结构,允许用户对单个对象...

    23种设计模式 软件设计

    通过将抽象和实现分离开来,桥接模式可以让你改变一个对象的行为,而无需修改该对象的类。这提高了系统的灵活性,使得抽象和实现可以独立演化。 这些设计模式各有其应用场景和优势,例如: - 工厂模式适用于当你...

    无线桥接图解(集中三种案例)概要.pdf

    同时,文章还介绍了无线路由器的应用模式,包括AP模式、无线客户端模式、点对点桥接模式、点对点桥接模式(适用无线将多个有线局域网连接在一起)和无线中继模式。 1. 使用WDS功能的路由器实现无线桥接 在这个案例...

    设计模式自主学习,包含23种设计模式的内容

    4. **桥接模式(Bridge)**:桥接模式分离抽象和实现,使得它们可以独立变化。它将抽象部分与实现部分解耦,使得它们可以独立演化。 5. **表达式模式(Expression)**:表达式模式通常用于构建计算表达式,它允许...

    JAVA中几种设计模式的例子

    6. 桥接模式(Bridge): 桥接模式将抽象部分与实现部分分离,使它们可以独立变化。这提高了系统的灵活性,降低了耦合度。 7. 组合模式(Composite): 组合模式允许你将对象组合成树形结构来表现“整体/部分”...

    ASP.NET设计模式

    3. 桥接模式(Bridge): 桥接模式将抽象部分与其实现部分分离,使它们可以独立变化。在ASP.NET中,这可以应用于用户界面和业务逻辑的分离。例如,UI层(如ASP.NET MVC视图)作为抽象,而具体的业务逻辑(如服务层...

    C#设计模式

    6. 桥接模式(Bridge Pattern):桥接模式将抽象部分与实现部分分离,使它们可以独立变化。C#中,可以通过接口和多态性实现这一模式。 7. 组合模式(Composite Pattern):组合模式将对象组织成树形结构,可以表示...

    设计模式学习笔记大全

    6. 桥接模式(Bridge): Bridge模式将抽象部分与实现部分分离,使它们可以独立变化。这种分离使得两者可以独立地进行扩展,提高了系统的灵活性。 7. 组合模式(Composite): Composite模式将对象组合成树形结构,...

Global site tag (gtag.js) - Google Analytics