Bridge 桥接模式
目录
[TOC]
1. 概述
1.1. 设计模式定义
桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。
1.2. 自我理解
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。
1.3. 桥接模式的组成
抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。
修正抽象化(RefinedAbstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
具体实现化(ConcreteImplementor)角色:这个角色给出实现化角色接口的具体实现。
2. UML
3. Example
3.1. 场景
在JDBC使用时,可能会根据项目运行更换数据库,而且有时为了调试增加耗时功能,增加SQL详情功能,我们都可以利用桥接模式来实现拓展。
3.2. 代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
/** * Created * Date: 2021/07/28 11:24 <br/> * Description: 桥接模式 * * @author jomin@loserzhao.com * @see */ public class BridgePatternDemo { public static void main(String[] args) { Driver mySQLDriver = new MySQLDriver(); Driver oracleDriver = new OracleDriver(); DriverManager driverManager = new JDBCDriver(mySQLDriver); driverManager.execute(); driverManager = new JDBCDriver(oracleDriver); driverManager.execute(); } public interface Driver { void execute(); } public static class MySQLDriver implements Driver { public void execute() { System.out.println("MySQLDriver执行了功能逻辑"); } } public static class OracleDriver implements Driver { public void execute() { System.out.println("OracleDriver执行了功能逻辑"); } } public static abstract class DriverManager { protected Driver driver; public DriverManager(Driver driver) { this.driver = driver; } public abstract void execute(); } public static class JDBCDriver extends DriverManager { public JDBCDriver(Driver driver) { super(driver); } @Override public void execute() { long startTime = System.currentTimeMillis(); driver.execute(); System.out.println("consume [" + (System.currentTimeMillis() - startTime) + "] ms"); } } } |
原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]
本文链接地址: http://www.loserzhao.com/java/designpattern/bridge-designpattern.html
文章的脚注信息由WordPress的wp-posturl插件自动生成
0 条评论。