博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
桥接模式
阅读量:4217 次
发布时间:2019-05-26

本文共 1825 字,大约阅读时间需要 6 分钟。

简单来讲,桥接模式是一个两层的抽象。桥接模式是用于把抽象和实现脱耦,这样它们就能独立变化。 桥接模式使用了封装、聚合,可以用继承将不同的功能拆分为不同的类。

所谓的耦合,就是两个实体的某种强关联。而将它们的强关联去掉就是脱耦。强关联就是在编译期就已经确定的,无法在运行期动态改变的关联(Java继承是强关联,聚合是弱关联)。

示例代码:

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

public interface ITV {    public void on();    public void off();    public void switchChannel(int channel);}

实现海尔的ITV接口:

public class HaierTV implements ITV {    @Override    public void on() {        System.out.println("Haier is turned on.");    }     @Override    public void off() {        System.out.println("Haier is turned off.");    }     @Override    public void switchChannel(int channel) {        System.out.println("Haier: channel - " + channel);    }}

再实现TCL的ITV接口:

public class TCLTV implements ITV {     @Override    public void on() {        System.out.println("TCL is turned on.");    }     @Override    public void off() {        System.out.println("TCL is turned off.");    }     @Override    public void switchChannel(int channel) {        System.out.println("TCL: channel - " + channel);    }}

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

public abstract class AbstractRemoteControl {    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);    }}

定义遥控器的具体类:

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 TCLTV();        LogitechRemoteControl lrc = new LogitechRemoteControl(tv);        lrc.setChannelKeyboard(100);        }}

转载地址:http://gstmi.baihongyu.com/

你可能感兴趣的文章
机器学习(一)K-近邻
查看>>
UML九种图
查看>>
RUP(Rational 统一开发过程)
查看>>
设计模式与UML
查看>>
培养好习惯
查看>>
bill老师培训(二)
查看>>
bill老师培训(一)
查看>>
编译原理-文法复习
查看>>
监考那时心情
查看>>
“批斗”大会
查看>>
信息资源管理
查看>>
信息资源管理
查看>>
BASIC-2 01字串 循环 显示32个二进制数
查看>>
ALGO-1 区间k大数查询 排序 查找
查看>>
ALGO-2 最大最小公倍数 贪心算法
查看>>
C#基础—面向对象
查看>>
操作系统各类的特点
查看>>
操作系统—死锁
查看>>
C#基础与技巧——类与里氏替换
查看>>
对思维导图的认识
查看>>