【HeadFirst 设计模式学习笔记】19 桥接(Bridge)模式拾零

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

1.概述

该模式也是Head First中未收录的,其主要用于分离接口与实现,常应用在你不希望将实现和抽象永久绑定的时候。其实质在于提供一个对抽象接口的抽象实现,而抽象实现中又包含一个具体实现接口(叫做“实现者”)的引用,通过这个引用给抽象实现提供能力。

2.实例

假设我们要创建一个具有持久化能力的类,其对象实例的持久化可能是通过数据库,也可能是通过文件系统进行。通常的实现是通过继承这个类分别完成数据库和文件系统持久化的能力。但这就会导致具体实现和抽象的紧密绑定,不利于以后单独对实现或抽象进行修改或扩展。我们可以使用桥接模式解决这个问题:

首先我们先创建持久化这个能力的接口:

 
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 

对于这个抽象接口,我们提供一个抽象实现:

 
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 

在这个抽象实现中,通过持有一个PersistenceImplementor接口的对象来完成每一个具体操作的实际实现。

现在我们就对这个实现者接口PersistenceImplementor进行定义,这个实现者则定义了三个方法,其不同于抽象接口定义的方法。

 
 

 

现在我们就实现数据库和文件系统持久化的具体方法,这是通过实现这个实现者接口完成的,为了突出这个设计模式,实现的具体细节略去:

 
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 

到此为止,我们实现了桥接模式,通过实现者接口PersistenceImplementor完成了具体实现与抽象接口之间的桥接。

现在我们就可以使用这个桥接模式了:

 
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 
 
   
 

其中的persistenceAPI这个变量可以为Persistence类型也可以为PersistenceImp,在这里并无本质区别。

 

3.UML图

image

 

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

转载于:https://www.cnblogs.com/gnuhpc/archive/2012/12/21/2827656.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值