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 桥接模式

  • 2011年12月25日 19:45
  • 2KB
  • 下载

桥接模式java示例代码

  • 2016年01月11日 21:14
  • 10KB
  • 下载

java桥接模式

桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。“抽象部分与它的实现部分分离”指抽象类与它的派生类用来实现自己的对象。通俗的讲:实现系统可能有多角度分类,每一种分类都有可能变化,那么把...

JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯

分布式开发的历史利用Remote方式调用远程对象实现服务器与客户端之间通讯是一种常用的网络开发方式,在.NET与JAVA开发当中,对Remote远程对象早已有着足够的支持(对Remote远程对象调用有...
  • cpcpc
  • cpcpc
  • 2011年06月22日 10:28
  • 680

Java桥接模式

Java桥接模式 桥接模式将定义与其实现分离。 它是一种结构模式。 桥接(Bridge)模式涉及充当桥接的接口。桥接使得具体类与接口实现者类无关。 这两种类型的类可以改变但不会影响对方。...

桥接模式(java实现)

桥接模式 手机品牌M和N都有游戏和通讯录功能,都用继承实现,代码如下. public  class Brand { public void run() {} } public class MBrand...

Java 传统桥接模式

桥接模式(bridge pattern)是一种策略式委派方式,其主要目标是避免类型爆炸。
  • yqj2065
  • yqj2065
  • 2014年09月01日 02:05
  • 1698

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

Java桥接模式

Java 桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接...

java bridge 桥接模式

桥接模式的用意是将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化 概念的东西到此为止,举个例子,假设汽车有2种行驶状态,100km/h高速行驶和...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java的桥接模式
举报原因:
原因补充:

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