简单来讲,桥接模式是一个两层的抽象。
桥接模式是用于“把抽象和实现分开,这样它们就能独立变化”。 桥接模式使用了封装、聚合,可以用继承将不同的功能拆分为不同的类。
1、桥接模式的故事
电视和遥控器(图中有错字)是一个完美展示两层抽象的例子。你有一个电视机的接口,还有一个遥控器的抽象类。我们都知道,将它们中任何一个定义为一个具体类都不是好办法,因为其它厂家会有不同的实现方法。
2、桥接模式Java示例代码
首先定义电视机的接口:ITV
1 |
public interface ITV {
|
2 |
public void on();
|
3 |
public void off();
|
4 |
public void switchChannel( int channel);
|
5 |
} |
实现三星的 ITV 接口。
1 |
public class SamsungTV implements ITV {
|
2 |
@Override
|
3 |
public void on() {
|
4 |
System.out.println( "Samsung is turned on." );
|
5 |
}
|
6 |
7 |
@Override
|
8 |
public void off() {
|
9 |
System.out.println( "Samsung is turned off." );
|
10 |
}
|
11 |
12 |
@Override
|
13 |
public void switchChannel( int channel) {
|
14 |
System.out.println( "Samsung: channel - " + channel);
|
15 |
}
|
16 |
} |
再实现索尼的ITV接口。
1 |
public class SonyTV implements ITV {
|
2 |
3 |
@Override
|
4 |
public void on() {
|
5 |
System.out.println( "Sony is turned on." );
|
6 |
}
|
7 |
8 |
@Override
|
9 |
public void off() {
|
10 |
System.out.println( "Sony is turned off." );
|
11 |
}
|
12 |
13 |
@Override
|
14 |
public void switchChannel( int channel) {
|
15 |
System.out.println( "Sony: channel - " + channel);
|
16 |
}
|
17 |
} |
遥控器要包含对TV的引用。
1 |
public abstract class AbstractRemoteControl {
|
2 |
/**
|
3 |
* @uml.property name="tv"
|
4 |
* @uml.associationEnd
|
5 |
*/
|
6 |
private ITV tv;
|
7 |
8 |
public AbstractRemoteControl(ITV tv){
|
9 |
this .tv = tv;
|
10 |
}
|
11 |
12 |
public void turnOn(){
|
13 |
tv.on();
|
14 |
}
|
15 |
16 |
public void turnOff(){
|
17 |
tv.off();
|
18 |
}
|
19 |
20 |
public void setChannel( int channel){
|
21 |
tv.switchChannel(channel);
|
22 |
}
|
23 |
} |
定义遥控器的具体类。
1 |
public class LogitechRemoteControl extends AbstractRemoteControl {
|
2 |
3 |
public LogitechRemoteControl(ITV tv) {
|
4 |
super (tv);
|
5 |
}
|
6 |
7 |
public void setChannelKeyboard( int channel){
|
8 |
setChannel(channel);
|
9 |
System.out.println( "Logitech use keyword to set channel." );
|
10 |
}
|
11 |
} |
1 |
public class Main {
|
2 |
public static void main(String[] args){
|
3 |
ITV tv = new SonyTV();
|
4 |
LogitechRemoteControl lrc = new LogitechRemoteControl(tv);
|
5 |
lrc.setChannelKeyboard( 100 );
|
6 |
}
|
7 |
} |
输出如下:
1 |
Sony: channel – 100 |
2 |
Logitech use keyword to set channel.
|
总结一下, 桥接模式允许两层实现的抽象,上面的电视机和遥控器就是很好的例子。可见,桥接模式提供了更多的灵活性。
3、Eclipse 平台上的桥接模式
在Eclipse 架构使用的模式中,桥接模式占有重要的地位。
相关推荐
JAVA-设计模式-结构型模式-桥接模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
Java 桥接模式 设计模式 桥接模式(Bridge Pattern)是一种常用的设计模式,它将抽象化和实现化解耦,使用封装、聚合以及继承等基本技术,将两个独立变化的维度通过抽象化的方式进行桥接,从而降低了它们之间的耦合...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛应用于处理组件之间的耦合问题,使得系统具有更好的可扩展性和灵活性。 桥接模式的主要组成部分...
这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的解决方案的标准化描述,它们在软件工程中起到了重要的作用,帮助开发者创建可维护、可扩展且易于理解...
Java设计模式是软件工程中的一种重要思想,它总结了在解决特定问题时,程序员们反复使用的一些最佳实践和解决方案。这个资源"Java设计模式----通俗易懂版"显然是一个专门针对初学者或需要深入理解设计模式的开发者...
这篇名为"JAVA设计模式---100%推荐"的资源,可能是对Java设计模式的深入解析,旨在帮助开发者更好地理解和应用这些模式。 设计模式通常分为三类:创建型、结构型和行为型。创建型模式涉及对象的实例化过程,如单例...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件设计中常用于降低系统的耦合度,使得类的扩展和维护更为方便。 首先,我们理解桥接模式的核心概念。在桥接模式...
JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂方法模式(Factory Method); 2、 抽象工厂模式; 3、 单例模式(Singleton) • 4、 建造者模式(Builder); 5、 原型模式(Prototype...
本资源主要介绍了JAVA设计模式的原则和23种设计模式的总结。设计模式是软件设计中的一种解决方案,能够使软件系统更加灵活、可维护和可扩展。本资源首先介绍了设计模式的六大原则,包括单一责任原则、开闭原则、里氏...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地进行变化。在软件工程中,这种模式对于处理有多种实现方式的抽象概念非常有用,可以降低系统的耦合度,提高模块间的独立性,使得代码更...
### Java设计模式详解 #### 创建型模式 **1.1 工厂方法(Factory Method)** 工厂方法模式定义了一个创建对象的接口,但允许子类决定实例化哪一个类。这使得一个类的实例化可以被推迟到其子类。这种模式在以下...
### Java设计模式的应用 #### 一、引言 在当今快速发展的软件开发领域,Java作为一门功能强大且灵活的语言,不仅拥有丰富的API资源,还能与强大的数据库系统无缝对接。这使得许多开发人员能够以模块化的形式构建...
在软件工程中,设计模式是一种被广泛接受的解决特定设计问题的...因此,深入学习和理解Java设计模式对于任何Java开发者来说都是至关重要的。通过文档中的图解和代码示例,读者可以更好地理解和掌握这些模式的实际应用。
《Java与模式》是阎宏博士的一本经典著作,它深入浅出地介绍了如何在Java编程中应用设计模式。这本书不仅讲解了设计模式的基本概念,还涵盖了23种经典的GOF设计模式,并结合Java语言特性进行了详细的解释和实例演示...
通过阅读《设计模式-Java语言中的应用》,读者不仅可以掌握设计模式的基本概念和原理,还能学习到如何在实际项目中选择合适的设计模式,以及如何优雅地在Java代码中实现这些模式。这将有助于提升开发者的编程技巧,...
Java设计模式是软件工程中的一种重要思想,它代表了在解决特定问题时的最佳实践。这些模式都是经过时间和经验验证的设计解决方案,可以提高代码的可读性、可维护性和复用性。Java设计模式主要分为三类:创建型模式、...
**Java设计模式——入门** 设计模式是软件开发中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。Java设计模式是面向对象编程中的一个重要概念,可以帮助开发者编写可复用、可维护、易于理解的代码。这...
Java设计模式是软件开发中的一种最佳实践,它们是解决常见问题的经验总结,旨在提高代码的可重用性、可维护性和可扩展性。本篇Java设计模式(疯狂Java联盟版)详细介绍了二十三种设计模式,包括创建型、结构型和行为...
《Java与模式---闫宏》这本书是针对Java程序员深入理解设计模式的重要参考资料。设计模式是软件工程中的一个重要概念,它们代表了在特定上下文中解决常见问题的最佳实践。这本书结合了中国的道家思想,以一种独特的...