美文网首页
桥接模式

桥接模式

作者: lgy_gg | 来源:发表于2017-09-16 15:45 被阅读0次

1.桥接模式概念

在《Head First Design Patterns》文中是这么介绍桥接模式的,“不仅可以改变你的实现,也可以改变你的抽象”。这句话说得一头雾水,这里的实现和抽象指的是什么呢?下面会通过例子来解释。

2.桥接模式的作用

把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

3.使用场景

实现系统可能有多个角度分类,每一种角度都可能变化。说实话,我不懂怎么总结,只能通过例子来说明。

4.优点和缺点

优点
1、抽象和实现的分离,不会互相影响。
2、对于具体的抽象类的修改,不会影响到客户。
缺点
增加系统的理解与设计难度。

5.例子解析

桥接模式例子解析类图

这是一个遥控器和TV的例子。遥控器控制TV,不同的遥控器控制不同的TV.
遥控器抽象类(这个类可以是抽象类或者是接口)

package com.lgy.test;

/**
 * @author LGY
 * 把抽象化与实现化解耦,使得二者可以独立变化。这句化还真不好理解。我自己理解是这样的就以遥控器和TV来解释。
 * 不同的遥控器控制不同的TV。这里遥控器和TV都有可能发生变化,为了实现解耦,最好就是能将她们分开,独立让他们变化。
 * 但是这里的抽象化和实现化指的是啥?就本例来说,抽象化指的是遥控器,实现化指的是TV.只要我们能够区分是谁控制谁就很好理解了
 * 这里很明显是遥控器控制TV.而且代码中也很明显,RemoteControl和TV的关系是RemoteControl Has-a TV的关系
 */
public abstract class RemoteControl {

    TV imprementor;
    
    public RemoteControl(TV imprementor) {
        this.imprementor = imprementor;
    }
    abstract void on();
    abstract void off();
    public void setChannel(int station)
    {
        imprementor.tuneChannel(station);
    }
}

遥控器具体实现类

package com.lgy.test;

public class ConcrateRemote extends RemoteControl{

    public ConcrateRemote(TV imprementor) {
        super(imprementor);
    }
    private int currentStation;
    
    @Override
    void on() {
        imprementor.on();
    }

    @Override
    void off() {
        imprementor.off();
    }

    public void setStation(int station) {
        this.currentStation = station;
    }
    
    public void nextChannel() {
        setStation(currentStation+1);
        setChannel(currentStation);
    }
    public void previousChannel() {
        setStation(currentStation-1);
        setChannel(currentStation);

    }
}

TV接口

package com.lgy.test;

public interface TV {

    void on();
    void off();
    void tuneChannel(int station);
}

TV具体类:RCA

package com.lgy.test;

public class RCA implements TV{

    @Override
    public void on() {
        System.out.println("RCA ON");
    }

    @Override
    public void off() {
        System.out.println("RCA OFF");
    }

    @Override
    public void tuneChannel(int station) {
        System.out.println("RCA current station "+station);
    }
}

TV具体类:Sony

package com.lgy.test;

public class Sony implements TV{

    @Override
    public void on() {
        System.out.println("Sony ON");
    }

    @Override
    public void off() {
        System.out.println("Sony OFF");
    }

    @Override
    public void tuneChannel(int station) {
        System.out.println("Sony current station "+station);
    }
}

客户端:

package com.lgy.test;

public class Client {

    public static void main(String[] args) {
        TV tv = new RCA();
        ConcrateRemote concrateRemote = new ConcrateRemote(tv);
        concrateRemote.on();
        concrateRemote.nextChannel();
        concrateRemote.nextChannel();
        concrateRemote.nextChannel();
        concrateRemote.nextChannel();
        concrateRemote.previousChannel();

        concrateRemote.off();
    }
}

6.总结

把抽象化与实现化解耦,使得二者可以独立变化。这句化还真不好理解。我自己理解是这样的,就以遥控器和TV来解释。不同的遥控器控制不同的TV。这里遥控器和TV都有可能发生变化,为了实现解耦,最好就是能将她们分开,独立让他们变化。但是这里的抽象化和实现化指的是啥?就本例来说,抽象化指的是遥控器,实现化指的是TV.只要我们能够区分是谁控制谁就很好理解了,这里很明显是遥控器控制TV.而且代码中也很明显,RemoteControl和TV的关系是RemoteControl Has-a TV的关系。

7.源码地址

http://download.csdn.net/download/lgywsdy/9981845

相关文章

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • 结构型模式:桥接模式

    文章首发:结构型模式:桥接模式 七大结构型模式之二:桥接模式。 简介 姓名 :桥接模式 英文名 :Bridge P...

  • 设计模式之桥接模式

    设计模式之桥接模式 1. 模式定义 桥接模式又称柄体模式或接口模式,它是一种结构性模式。桥接模式将抽象部分与实现部...

  • 06-01-001 虚拟机的网络连接方式(转运整理)

    一、Bridged(桥接模式) 什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥...

  • 桥接模式与中介模式

    桥接模式-BRIDGE 对桥接模式感兴趣,是因为公司业务上需要桥接Html5和ReactNative两个平台。桥接...

  • 设计模式——桥接模式

    设计模式——桥接模式 最近公司组件分享设计模式,然而分配给我的是桥接模式。就在这里记录我对桥接模式的理解吧。 定义...

  • 桥接模式

    个人博客http://www.milovetingting.cn 桥接模式 模式介绍 桥接模式也称为桥梁模式,是结...

  • 桥接模式

    桥接模式 参考原文: https://zhuanlan.zhihu.com/p/62390221 定义 桥接模式 ...

  • 10-桥接模式

    桥接模式-Bridge Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】 处理多维度变化——桥接模式(...

  • Java设计模式——桥接模式

    Java设计模式之桥接模式 回顾 上一期分享了适配器模式,主要为了实现解耦 桥接模式 简介 桥接模式是对象的结构模...

网友评论

      本文标题:桥接模式

      本文链接:https://www.haomeiwen.com/subject/mxaysxtx.html