美文网首页
Java 桥接模式

Java 桥接模式

作者: CodeDuan | 来源:发表于2022-02-09 11:04 被阅读0次

一、定义

将抽象和实现分离,使他们可以独立变化,他是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

主要角色:

抽象化:定义抽象类,并包含一个对实现化对象的引用。

扩展抽象化:是抽象化角色的子类,实现父类的业务方法,并通过组合关系调用实现化角色中的业务方法。

实现化:定义实现化角色的接口,供扩展抽象化角色调用。

具体实现化:给出实现化角色接口的具体实现。

二、代码实现

举例:比如当前要开发一款跨平台播放器,Windows,Linux,要求可以播放Mp4和Avi格式的视频,其中操作系统和视频格式就是上面所说的两个可变维度,一个是操作系统,一个是视频格式,他是两个不同的维度。接下来看代码实现。

实现化角色(播放器)

public interface VideoPlayer {
    void playVideo(String name);
}

具体实现化角色(Mp4播放器)

public class Mp4Player implements VideoPlayer {
    @Override
    public void playVideo(String name) {
        System.out.println(name+"播放Mp4");
    }
}

具体实现化角色(Avi播放器)

public class AviPlayer implements VideoPlayer{
    @Override
    public void playVideo(String name) {
        System.out.println(name+"播放Avi");
    }
}

抽象化角色(操作系统)

public abstract class MySystem {
    protected VideoPlayer player;//持有实现化对象

    public MySystem(VideoPlayer player) {
        this.player = player;
    }

    public abstract void play();
}

扩展抽象化角色(Windows系统)

public class Windows extends MySystem {

    public Windows(VideoPlayer player) {
        super(player);
    }

    @Override
    public void play() {
        player.playVideo("Windows");
    }
}

扩展抽象化角色(Linux系统)

public class Linux extends MySystem {

    public Linux(VideoPlayer player) {
        super(player);
    }

    @Override
    public void play() {
        player.playVideo("Linux");
    }
}

使用:

public static void main(String[] args) {
        //创建Windows系统
        MySystem windows = new Windows(new Mp4Player());
        windows.play();

        MySystem windows1 = new Windows(new AviPlayer());
        windows1.play();

        //创建Linux系统
        MySystem linux = new Linux(new Mp4Player());
        linux.play();

        MySystem linux1 = new Linux(new AviPlayer());
        linux1.play();
    }

输出:

Windows播放Mp4
Windows播放Avi
Linux播放Mp4
Linux播放Avi

桥接模式提高了系统的扩展性,可以在两个维度中任意扩展,不需要修改原有系统,拿上面的例子来说 如果要播放Wmv格式的视频,那么只需要定义一个Wmv类来实现实现化角色即可。符合开闭原则。

相关文章

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

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

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

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

  • java 桥接模式

    用于解决系统中多维度问题

  • Java桥接模式

    概念 桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。...

  • 桥接模式-java

    概念: 桥接模式将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个...

  • Java 桥接模式

    一、定义 将抽象和实现分离,使他们可以独立变化,他是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维...

  • java/android 设计模式学习笔记(8)---桥接模式

    java/android 设计模式学习笔记(8)---桥接模式 【备注】只用于个人收藏

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

    桥接模式就是创建一道桥梁来连接两种类,一般都是对抽象和实现的桥接。对于那些不希望使用继承或因为多层次继承导致系统类...

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

    场景 商城系统中常见的商品分类,以电脑为例,如何良好的处理商品分类销售的问题? 下图的关系我们可以用多继承结构来实...

  • Java设计模式 - 桥接模式

    定义 将抽象部分与其实现部分分离,使它们能够独立地进行变化。 桥接模式解决的问题就是实现与抽象之间的静态继成问题,...

网友评论

      本文标题:Java 桥接模式

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