设计模式——桥接模式

作者: 树生1995 | 来源:发表于2018-10-11 10:41 被阅读10次

定义
桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。

目的
桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。

  • 结构
    结构
角色 类型 职责
Implementor 实现化角色 他是接口或者抽象类,定义角色必须的属性和行为
Abstraction 抽象化角色 定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类
ConcreteImplementorA ConcreteImplementorB 修正实现化角色 它实现接口或抽象类定义的方法和属性
RefinedAbstraction 修正抽象化角色 它引用实现化角色,对抽象化角色进行修改
  • 最佳实践

    汽车品牌内置导航仪,我们希望实现,每个品牌的导航仪都可以在任何一个牌子的汽车上安装并启动。

  • 导航插件的公共接口,定义了导航的行为方法

// this is Implementor
public interface Navigator {
        // base method
    public void work();
    public void getName();
}
// this is ConcreteImplementorA
public class NavigatorX implements Navigator{
    @Override
    public void work() {
        // do something
    }
    @Override
    public void getName(){
        System.out.println("我是X导航,很高兴为你服务!");
    }
 
}
// this is ConcreteImplementorB
public class NavigatorY implements Navigator{
    @Override
    public void work() {
        // do something
    }
    @Override
    public void getName(){
        System.out.println("我是Y导航,很高兴为你服务!");
    }
}
  • 汽车品牌抽象类,这个抽象类主要是导航的安装与启动
// this is Abstraction
public abstract class AbstractVehicleBrand {
    private Navigator navigator
    public abstract void install(Navigator navigator){
        this.navigator = navigator;
    }
    public abstract void open(){
        this.navigator.work();
    }
    public Navigator getNavigator(){
        retur this.navigator;
    }
}
// this is RefinedAbstraction
public class VehicleA extends AbstractVehicleBrand{
    @Override
    public void install(Navigator navigator) {
        super(navigator);
    }
        /*
         * 修正父类行为
         */
    @Override
    public void open() {
        super.open();
        super.getNavigator().getName();
    }
 
}
  • 客户端
public class Client {
    public static void main(String[] args){
    
        INavigator navigatorX = new NavigatorX();
        INavigator navigatorY = new NavigatorYN();
        
        AbstractVehicleBrand vehicleA = new VehicleA();
        vehicleA.install(navigatorX);
        vehicleA.open();
        
        AbstractVehicleBrand vehicleA = new VehicleA();
        vehicleA.install(navigatorY);
        vehicleA.open();
    }

使用场景

多个具有变化的分类共同实现功能时易采用桥接模式

相关文章

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(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/wfavaftx.html