设计模式-桥接模式

作者: 东西的南北 | 来源:发表于2017-09-17 11:00 被阅读252次

介绍

桥接模式属于结构型模式,用于把抽象化与实现化解耦,使得二者可以独立变化,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。桥接模式适用于一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,以及不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,或者一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
就例如各个小吃店的点餐系统,商品名称会和微辣、中辣、特辣区分开。小吃店的菜单可以看下图


这里写图片描述

通常这种都会放在另外一块,而不是放在每个食物的前面。如果放在食物的前面,那么这个菜单的扩大3倍,
如果商家又推出变态辣,那么整个菜单就需要重新做。


这里写图片描述

结构图

图片来源于网络

案例

这篇就用小吃店的点餐系统来举例。
食物抽象类

public abstract class Food {
    protected Seasoning seasoning;

    public void setSeasoning(Seasoning seasoning) {
        this.seasoning = seasoning;
    }
    
    public abstract void addSeasoning();
}

食物继承类-茄子

public class Eggplant extends Food {
    @Override
    public void addSeasoning() {
        System.out.print("茄子");
        seasoning.addSeasoning();
    }
}

食物继承类-鱼

public class Fish extends Food {
    @Override
    public void addSeasoning() {
        System.out.print("鱼");
        seasoning.addSeasoning();
    }
}

调料实现类接口

public interface Seasoning {
    void addSeasoning();
}

芥末调料

public class Mustard implements Seasoning {
    @Override
    public void addSeasoning() {
        System.out.println("加芥末");
    }
}

香菜调料

public class Coriander implements Seasoning {
    @Override
    public void addSeasoning() {
        System.out.println("加香菜");
    }
}

测试类

public class Client {
    public static void main(String[] args) {    
        Food fish = new Fish();
        fish.setSeasoning(new Coriander());
        fish.addSeasoning();
        
        Food eggplant = new Eggplant();
        eggplant.setSeasoning(new Mustard());
        eggplant.addSeasoning();
    }
}
测试结果1
如果要增加调料或者增加食物,只要继承相应的类或者接口就可以了。
Github地址
总结
--
桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。
使用桥接模式可以分离抽象接口及其实现部分,提高了系统的可扩充性实现细节对客户透明,可以对用户隐藏实现细节;其主要缺点是增加系统的理解与设计难度,且识别出系统中两个独立变化的维度并不是一件容易的事情。

相关文章

  • 设计模式-桥接模式

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

  • 桥接模式

    设计模式:桥接模式(Bridge)

  • 设计模式——桥接模式

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

  • 设计模式之桥接模式

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

  • 桥接模式

    介绍 桥接模式(Bridge Pattern) 也称为桥梁模式,是结构型设计模式之一。桥接模式的作用就是连接 "两...

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

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

  • 设计模式-桥接模式

    桥接模式介绍 桥接模式(Bridge Pattern)也称为桥梁模式,是结构型设计模式之一。顾名思义其与现实中的桥...

  • Android设计模式——桥接模式(七大结构型)

    1.桥接模式介绍 桥接模式(Bridge Pattern)也称为桥梁模式,是七大结构型设计模式之一。 2....

  • 2、桥接模式(结构型)

    第一次接触桥接模式是在刷面试题时,遇到问jdbc主要用到的设计模式是?桥接模式。 桥接模式(Bridge):将抽象...

  • Java设计模式<桥接模式>

    Java设计模式<桥接模式> 意图 桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将...

网友评论

    本文标题:设计模式-桥接模式

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