Java的桥接模式

转载 2016年05月31日 11:16:37

转载自:http://www.importnew.com/6857.html

放在这里,主要是方便记忆。侵权立删。

简单来讲,桥接模式是一个两层的抽象。

桥接模式是用于“把抽象和实现分开,这样它们就能独立变化”。 桥接模式使用了封装、聚合,可以用继承将不同的功能拆分为不同的类。

1、桥接模式的故事

电视和遥控器(图中有错字)是一个完美展示两层抽象的例子。你有一个电视机的接口,还有一个遥控器的抽象类。我们都知道,将它们中任何一个定义为一个具体类都不是好办法,因为其它厂家会有不同的实现方法。

2、桥接模式Java示例代码

首先定义电视机的接口:ITV

1
2
3
4
5
public interface ITV {
    public void on();
    public void off();
    public void switchChannel(int channel);
}

实现三星的 ITV 接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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);
    }
}

再实现索尼的ITV接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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);
    }
}

遥控器要包含对TV的引用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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);
    }
}

定义遥控器的具体类。

1
2
3
4
5
6
7
8
9
10
11
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.");
    }
}
1
2
3
4
5
6
7
public class Main {
    public static void main(String[] args){
        ITV tv = new SonyTV();
        LogitechRemoteControl lrc = new LogitechRemoteControl(tv);
        lrc.setChannelKeyboard(100);   
    }
}

输出如下:

1
2
Sony: channel – 100
Logitech use keyword to set channel.

总结一下, 桥接模式允许两层实现的抽象,上面的电视机和遥控器就是很好的例子。可见,桥接模式提供了更多的灵活性。


浅谈Java设计模式(十)桥接模式(Bridge)

前言: 桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接...
  • caihongdao123
  • caihongdao123
  • 2016年07月11日 09:49
  • 8493

JAVA设计模式之 桥接模式【Bridge Pattern】

一、概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式。二、适用场景 处理多维度变化。 ...
  • l416112167
  • l416112167
  • 2015年03月06日 17:43
  • 3107

Java设计模式 - 桥接模式与策略模式的区别

[转载自:http://www.blogjava.net/wangle/archive/2007/04/25/113545.html] 桥接(Bridge)模式是结构型模式的一种,而策略(strat...
  • lxqluo
  • lxqluo
  • 2011年11月17日 09:40
  • 3069

浅谈JAVA设计模式之——桥接模式(Bridge)

一、概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 二、适用性 1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者...
  • l1028386804
  • l1028386804
  • 2015年05月03日 12:25
  • 5416

菜鸟版JAVA设计模式-从抽象与实现说桥接模式

桥接模式,初学的时候其实很不理解为什么要把这个模式命名为桥接模式,脑海里突然联想到。其实我学习是一件比较痛苦的事情,因为我必须要知道来龙去脉才能学的进去,所以,很快我就对这个命名产生了兴趣,桥接? 嗯...
  • lulei9876
  • lulei9876
  • 2014年10月22日 15:26
  • 2148

java/android 设计模式学习笔记(8)---桥接模式

这篇博客我们来介绍一下桥接模式(Bridge Pattern),它也是结构型设计模式之一。桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯或者使用,桥接模式的作用就是为被分离了的抽象部分...
  • zhao_zepeng
  • zhao_zepeng
  • 2016年06月10日 19:59
  • 8116

策略模式和桥接模式的区别。

策略模式: 设计一个接口或者抽象类。 public interface Employment{ public void work();} 多种具体实现: public class E...
  • a990924291
  • a990924291
  • 2016年02月06日 09:40
  • 785

JAVA 设计模式 桥接模式

用途 桥接模式 (Bridge) 将抽象部分与实现部分分离,使它们都可以独立的变化。 桥接模式是一种结构式模式。 结构 ...
  • stu059074244
  • stu059074244
  • 2017年09月01日 09:52
  • 238

设计模式之桥接模式java实现

1.意图 将抽象部分和与它的实现部分分离,使它们都可以独立地变化。 2.别名 Handle/Body 3.动机...
  • plgy_Y
  • plgy_Y
  • 2017年05月06日 15:23
  • 292

Java设计模式(十)----桥接模式

桥接模式 (Bridge) 一、定义 二、结构 三、具体案例 1.传统方法 2.使用桥接模式 四、应用场景 一、定义将抽象部分与实现(行为...
  • tanggao1314
  • tanggao1314
  • 2016年01月30日 17:37
  • 874
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java的桥接模式
举报原因:
原因补充:

(最多只允许输入30个字)