`

结构型设计模式--桥接模式(Bridge)

阅读更多

桥接模式(Bridge)


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


    在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。


    效果及实现要点:
    (1) Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。


    (2) Bridge模式的应用一般在“两个非常强的变化维度”,有时候即使有两个变化的维度,但是某个方向的变化维度并不剧烈——换言之两个变化不会导致纵横交错的结果,并不一定要使用Bridge模式。

 

 

    拿汽车在路上行驶的来说。即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境(路)也在变化,在软件系统中就要适应两个方面的变化?怎样实现才能应对这种变化呢?

// 抽象路
public abstract class AbstractRoad {
	protected AbstractCar car;

	public AbstractCar getCar() {
		return car;
	}

	public void setCar(AbstractCar car) {
		this.car = car;
	}

	public abstract void run();
}

// 高速公路
public class SpeedWay extends AbstractRoad {
	public void run() {
		car.run();
		System.out.println("高速公路上行驶");
	}
}

// 市区街道
public class Street extends AbstractRoad {
	public void run() {
		car.run();
		System.out.println("市区街道上行驶");
	}
}

// 抽象汽车
public abstract class AbstractCar {
	public abstract void run();
}

// 小汽车;
public class Car extends AbstractCar {
	public void run() {
		System.out.println("小汽车在");
	}
}

// 公共汽车
public class Bus extends AbstractCar {
	public void run() {
		System.out.println("公共汽车在");
	}
}

public class Client {
	public static void main(String[] args) {
		// 小汽车在高速公路上行驶;
		AbstractRoad road1 = new SpeedWay();
		road1.setCar(new Car());
		road1.run();
		// 公共汽车在高速公路上行驶;
		AbstractRoad road2 = new SpeedWay();
		road2.setCar(new Bus());
		road2.run();
	}
}

    

    增加一个维度"人",不同的人开着不同的汽车在不同的路上行驶(三个维度)

public abstract class People {
	protected AbstractRoad road;

	public AbstractRoad getRoad() {
		return road;
	}

	public void setRoad(AbstractRoad road) {
		this.road = road;
	}

	public abstract void run();
}

public class Man extends People {
	public void run() {
		System.out.println("男人开着");
		road.run();
	}
}

public class WoMan extends People {
	public void run() {
		System.out.println("女人开着");
		road.run();
	}
}

public class Client {
	public static void main(String[] args) {
		// 男人开着公共汽车在高速公路上行驶;
		AbstractRoad road3 = new SpeedWay();
		road3.setCar(new Bus());
		People p = new Man();
		p.setRoad(road3);
		p.run();
	}
}

 

    桥接模式很好的符合了开放-封闭原则和优先使用合成(而不是继承)这两个面向对象原则组合模式 

  • 大小: 19.8 KB
分享到:
评论

相关推荐

    设计模式---桥接模式

    桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛应用于处理组件之间的耦合问题,特别是当需要为同一抽象提供多种实现或者需要独立地改变它们时。 ...

    c++设计模式-结构型模式-桥接模式

    c++设计模式-结构型模式-桥接模式;qt工程,c++简单源码; 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度...

    c++-设计模式之桥接模式(Bridge Pattern)

    桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使得两者可以独立地变化。这种模式常用于需要在多个维度上变化的场景,比如不同的形状和颜色,允许在不改变客户端代码的情况下增加新...

    设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式

    创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...

    Bridge 桥接模式(结构型模式)

    桥接模式(Bridge Pattern)是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。在软件工程中,这种分离有助于降低复杂性,提高代码的可维护性和可扩展性。桥接模式的核心...

    C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式)

    桥接模式(Bridge Pattern)是面向对象设计中的一种结构型模式,它将抽象部分与实现部分分离,使得它们可以独立地进行变化。在C#编程中,桥接模式的应用能够帮助我们更好地解耦系统,提高代码的灵活性和可扩展性。 ...

    设计模式 - 桥接模式(C++实例)

    桥接模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使得它们可以独立地进行变化。在C++编程中,桥接模式能够帮助我们设计出更灵活、可扩展的系统,允许我们在不修改原有代码的基础上更换或增加新的实现...

    C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) (Level 300)

    桥接模式(Bridge Pattern)是一种结构型设计模式,它旨在将抽象部分与其实现部分分离,使得它们可以独立地进行变化。在C#编程中,这种模式尤其有用,因为随着软件系统的复杂性增加,类的继承层次可能会变得难以管理...

    设计模式_结构型_桥接模式.md

    桥接模式(Bridge Pattern)是一种结构型设计模式,其主要目的是将抽象与实现解耦,使它们可以独立地进行变化。在软件设计中,我们经常会遇到需要将抽象概念和它的具体实现分离的场景,桥接模式正好可以解决这种问题...

    设计模式之桥接模式BridgePattern

    桥接模式(Bridge Pattern)是设计模式中的一种结构型模式,它主要解决的是在软件设计中,当抽象和实现之间存在紧密耦合时,如何使这两者能够独立地变化。这种模式通过引入一个抽象层来分离接口和实现,使得它们可以...

    C#面向对象设计模式纵横谈\8 结构型模式Bridge桥接模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源... 这是第8节:结构型模式Bridge桥接模式

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

    桥接模式是设计模式中的一种结构型模式,其主要目的是为了分离抽象部分和实现部分,以便两者能够独立地进行变化。这种模式的核心理念是通过引入一个抽象层来封装多种可能的实现,使得抽象和实现之间形成一种“桥接”...

    cpp代码-设计模式-桥接模式

    桥接模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使得两者可以独立进行变化。这种模式在C++编程中尤其有用,因为它允许我们创建灵活且可扩展的代码。 首先,让我们理解桥接模式的核心概念。在桥接...

    JAVA设计模式-chm版

    设计模式通常分为三大类:创建型模式、结构型模式和行为型模式。 1. 创建型模式(Creational Patterns): 这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract ...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    2. **结构型模式**:这类模式关注如何组合对象和类,以形成更大的结构。 - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):提供一个统一的接口,用来访问子系统的一组...

    26种设计模式-----pdf

    结构型模式则关注如何将类或对象组合成更大的结构,例如适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)和组合模式(Composite)。这些模式可以帮助我们处理类与类之间的...

    设计模式的桥接模式的例子

    桥接模式是设计模式中的一种结构型模式,它旨在将抽象部分与实现部分解耦,使得它们可以独立地变化。这种模式将抽象类和它的实现类进行分离,通过一个抽象接口来连接它们,使得两者可以独立发展,增加了系统的灵活性...

    设计模式之桥接模式,内含可运行代码

    桥接模式是软件设计模式中的一种结构型模式,它的主要目的是为了实现抽象和实现的解耦,使得两者可以独立地进行扩展。在桥接模式中,抽象类(Abstraction)不直接引用具体实现(Implementation),而是通过一个桥接...

Global site tag (gtag.js) - Google Analytics