简单点说,桥接模式就是一种具有两个层次的抽象。
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接模式采用封装、聚合以及继承将责任分配到不同的类中。
1、 桥接模式的故事
电视和电视遥控器的例子可以说明这个两层的抽象。你有TV的接口和Remote Control的抽象类。我们知道,由于不同的设备生产商会制作不同的电视遥控器和电视,所以写具体的TV和Remote Control类不是个好主意。
PS:图中的单词拼写错了。
2、JAVA实例代码
首先定义电视的接口
public interface ITV { public void on(); public void off(); public void switchChannel(int channel); }
三星实现电视的接口
public class SamsungTV implements ITV { @Override public void on() { System.out.println("Samsung is turned on."); } @Override public void off() { System.out.println("Samsung is turned off."); } @Override public void switchChannel(int channel) { System.out.println("Samsung: channel - " + channel); } }
索尼实现电视接口
public class SonyTV implements ITV { @Override public void on() { System.out.println("Sony is turned on."); } @Override public void off() { System.out.println("Sony is turned off."); } @Override public void switchChannel(int channel) { System.out.println("Sony: channel - " + channel); } }
Remote control包含一个TV的引用
public abstract class AbstractRemoteControl { /** * @uml.property name="tv" * @uml.associationEnd */ private ITV tv; public AbstractRemoteControl(ITV tv){ this.tv = tv; } public void turnOn(){ tv.on(); } public void turnOff(){ tv.off(); } public void setChannel(int channel){ tv.switchChannel(channel); } }
定义一个具体的Remote Control的类
public class LogitechRemoteControl extends AbstractRemoteControl { public LogitechRemoteControl(ITV tv) { super(tv); } public void setChannelKeyboard(int channel){ setChannel(channel); System.out.println("Logitech use keyword to set channel."); } }
public class Main { public static void main(String[] args){ ITV tv = new SonyTV(); LogitechRemoteControl lrc = new LogitechRemoteControl(tv); lrc.setChannelKeyboard(100); } }
输出:
Sony: channel – 100 Logitech use keyword to set channel.
概括的说,桥接模式允许对实现有两层抽象,就像例子中的TV和Remote Control。因此这样更加灵活。
相关推荐
创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...
桥接模式和策略模式是软件设计模式中的两种重要模式,它们在实现上有着相似之处,但各自的应用场景和设计理念有所不同。下面将详细阐述这两种模式的特点、区别以及它们在实际编程中的应用。 首先,桥接模式(Bridge...
桥接模式(Bridge Pattern)是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。在IT行业中,这种模式经常用于系统设计,特别是当需求可能频繁变化,或者需要支持多种不同...
Java 桥接模式 设计模式 桥接模式(Bridge Pattern)是一种常用的设计模式,它将抽象化和实现化解耦,使用封装、聚合以及继承等基本技术,将两个独立变化的维度通过抽象化的方式进行桥接,从而降低了它们之间的耦合...
6. 桥接模式(Bridge):将抽象部分与实现部分分离,使它们可以独立变化。这有助于降低系统的复杂度,增加灵活性。 7. 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。它使得用户对...
本实验主要探讨了两种经典的设计模式:桥接模式(Bridge Pattern)和装饰模式(Decorator Pattern)。这两种模式都是面向对象设计中的重要工具,能帮助我们构建灵活且可扩展的代码。 **桥接模式**是一种结构型设计...
如适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰者模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)和代理模式(Proxy)等。 - **行为型模式**:关注于对象间的职责分配,...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地进行变化。在软件工程中,这种模式对于处理系统中不同类的组件如何协同工作,尤其是当这些组件需要独立扩展时,显得尤为重要。通过桥接...
桥接模式是设计模式中的一种结构型模式,它旨在将抽象部分与实现部分解耦,使得它们可以独立地变化。这种模式将抽象类和它的实现类进行分离,通过一个抽象接口来连接它们,使得两者可以独立发展,增加了系统的灵活性...
在C#中,面向对象设计模式通常用于解决复杂度问题,桥接模式则是一种更为高级的设计策略。它通过引入一个抽象接口,将抽象类与其具体实现分离开来,形成两个独立的继承层次,这样抽象部分和实现部分都可以独立地进行...
“[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...
桥接模式是软件设计模式中的一种结构型模式,它的主要目的是为了实现抽象和实现的解耦,使得两者可以独立地进行扩展。在桥接模式中,抽象类(Abstraction)不直接引用具体实现(Implementation),而是通过一个桥接...
根据给定的部分内容,我们可以通过以下步骤来实现桥接模式: 1. **定义Implementor接口**: ```java public interface Implementor { public void operation(); } ``` 2. **实现Implementor接口**: ```java...
桥接模式(Bridge Pattern)是设计模式中的一种结构型模式,它主要解决的是在软件设计中,当抽象和实现之间存在紧密耦合时,如何使这两者能够独立地变化。这种模式通过引入一个抽象层来分离接口和实现,使得它们可以...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛应用于处理组件之间的耦合问题,使得系统具有更好的可扩展性和灵活性。 桥接模式的主要组成部分...
结构型模式的例子有适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。 3. 行为型模式:这些模式涉及类或对象的职责分配,它们描述了如何对各个类或对象之间如何分配职责以及如何协调它们...
### 设计模式11桥接模式 #### 模式动机 桥接模式是解决系统中存在多维度变化问题的一种有效手段。例如,在图形绘制场景中,假设需要绘制不同形状(如矩形、圆形、椭圆、正方形)并赋予它们不同的颜色(如红色、...