博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式--桥接模式
阅读量:6395 次
发布时间:2019-06-23

本文共 1742 字,大约阅读时间需要 5 分钟。

hot3.png

桥接模式(bridge):

把事物和其具体实现分开,使它们可以各自独立的变化。

桥接的用意是:

将抽象化与实现化解耦,使得二者可以独立变化。

示例:

桥接模式测试类(客户端)Client.java

/** * 桥接模式测试类(客户端) * * @author Kevin * @date 2016-3-15 */public class Client {	public static void main(String[] args) {		AbstractDriverManager bridge = new DriverManager();		/* 使用MySQL数据库驱动连接 */		Driver mySQLDriver = new MySQLDriverImpl();		bridge.setDriver(mySQLDriver);		bridge.connect();		/* 使用Oracle数据库驱动连接 */		Driver oracleDriver = new OracleDriverImpl();		bridge.setDriver(oracleDriver);		bridge.connect();	}}

驱动桥类AbstractDriverManager.java

/** * 驱动桥 * * @author Kevin * @date 2016-3-15 */public abstract class AbstractDriverManager {	/* 驱动接口 */	private Driver driver;	/**	 * 连接数据库	 *	 * @author Kevin	 */	public void connect() {		driver.connect();	}	public Driver getDriver() {		return driver;	}	public void setDriver(Driver driver) {		this.driver = driver;	}}

驱动管理器类DriverManager.java

/** * 驱动管理器 * * @author Kevin * @date 2016-3-15 */public class DriverManager extends AbstractDriverManager {	@Override	public void connect() {		this.getDriver().connect();	}}

驱动接口类Driver.java

/** * 驱动接口 * * @author Kevin * @date 2016-3-15 */public interface Driver {	/**	 * 连接	 *	 * @author Kevin	 */	void connect();}

MySQL驱动接口实现类MySQLDriverImpl.java

/** * MySQL驱动接口实现类 * * @author Kevin * @date 2016-3-15 */public class MySQLDriverImpl implements Driver {	@Override	public void connect() {		System.out.println("use MySQLDriver connect MySQL database");	}}

Oracle驱动接口实现类OracleDriverImpl.java

/** * Oracle驱动接口实现类 * * @author Kevin * @date 2016-3-15 */public class OracleDriverImpl implements Driver {	@Override	public void connect() {		System.out.println("use OracleDriver connect Oracle database");	}}

转载于:https://my.oschina.net/zhaokaiju/blog/654101

你可能感兴趣的文章
File Operations in Android NDK(转)
查看>>
关于winform屏蔽锁
查看>>
@angular/cdk/overlay/position小结
查看>>
完全基于rxjs的组件开发探索
查看>>
POI 实现excel 导出
查看>>
15:EventBus源码解析
查看>>
Laravel_项目中多条件查询的页面实现
查看>>
SAP S4CRM 1811 服务订单API介绍
查看>>
Java泛型 - 如何破解"Enum<E extends Enum<E>>"?
查看>>
JavaScript模块化
查看>>
深入浅出任务队列机制,非常浅
查看>>
nodeJS贪吃蛇
查看>>
安装lnmp 时如何修改数据库数据存储地址及默认访问地址
查看>>
Vue 中非父子组件间的传值
查看>>
vue:虚拟dom的实现
查看>>
LeetCode27.移除元素 JavaScript
查看>>
如何将kux格式的视频转换成我们常用的MP4格式
查看>>
[sublime系列文章] sublime text 3插件配置说明
查看>>
学习 PixiJS — 碰撞检测
查看>>
Vue 基础篇
查看>>