Dot Net设计模式—桥接模式
2005-08-17 09:02
447 查看
1.概述
1.1意图
“将抽象部分与它的实现部分分离,使它们都可以独立地变化”,这是GOF在《设计模式》一书中的解释。这里的抽象和实现并不一定是同一层次的概念,例如数据库操作可以归结为“增加、删除和修改”。很多业务过程都是通过对数据库的操作实现的,例如“库存管理”中的“入库”,这个业务动作的软件实现可以描述为“在库存表中增加一条记录”,而“入库”和“插入记录”处于不同的业务层次。
1.2使用场合
在如下情况下可以使用桥接模式。
(1)不希望在业务和业务的软件实现之间存在因定的绑定关系。例如,不希望“入库”业务过程和具体的数据库访问技术或数据库管理系统有过于密切的关系。最好是数据库访问技术的升级,或数据库管理系统的改变对业务模块没有影响,甚至在运行期间可以通过动态绑定来选择不同数据库技术或数据库管理系统。
(2)希望类的抽象和实现部分可以扩充,进而实现不同的抽象接口和实现部分的组合。
(3)修改实现部分对用户不产生影响,即代码无须重新编译。
(4)复用实现部分。由于实现部分所处的层次较低,因此可以被多种业务模块复用。例如,数据库访问模块可以用在多种业务单元中。
1.3结构
桥接模式的结构如图所示。
Imports System.IO
2Imports System.Net
3 Imports System.Text
4
具体的读取类实现ReadData方法。下面是从文本文件中读取数据,其中给出了读取用逗号分隔数据的方法:
1
下面是产生读取对象的简单工厂:
1Public Class clsReaDataFactoryClass clsReaDataFactory
2 Pbulic Shared Function getDataReader()Function getDataReader ( ) As clsAbstractReadData
3 Dim datafilepath As String =
4ConfigurationSettings.AppSettings (“DataFilePath”)
5 Dim strDataType As String = ConfigurationSettings.AppSettings (“DataType”)
6Dim strHttp As String = ConfigurationSettings.AppSettings (“DataURL”)
7Select Case strDataType
8 Case “http”
9 Dim mrd As clsReadDataFromRemoteFile
10 Mrd = New clsReadDataFromRemoteFile (strHttp)
11 Return mrd
12 Case Else
13 Dim mrd As clsReadDataFromFile
14 Mrd = New clsReadDataFromFile(datafilepath)
15 Return mrd
16 End Select
17 End Function
18end class
1.1意图
“将抽象部分与它的实现部分分离,使它们都可以独立地变化”,这是GOF在《设计模式》一书中的解释。这里的抽象和实现并不一定是同一层次的概念,例如数据库操作可以归结为“增加、删除和修改”。很多业务过程都是通过对数据库的操作实现的,例如“库存管理”中的“入库”,这个业务动作的软件实现可以描述为“在库存表中增加一条记录”,而“入库”和“插入记录”处于不同的业务层次。
1.2使用场合
在如下情况下可以使用桥接模式。
(1)不希望在业务和业务的软件实现之间存在因定的绑定关系。例如,不希望“入库”业务过程和具体的数据库访问技术或数据库管理系统有过于密切的关系。最好是数据库访问技术的升级,或数据库管理系统的改变对业务模块没有影响,甚至在运行期间可以通过动态绑定来选择不同数据库技术或数据库管理系统。
(2)希望类的抽象和实现部分可以扩充,进而实现不同的抽象接口和实现部分的组合。
(3)修改实现部分对用户不产生影响,即代码无须重新编译。
(4)复用实现部分。由于实现部分所处的层次较低,因此可以被多种业务模块复用。例如,数据库访问模块可以用在多种业务单元中。
1.3结构
桥接模式的结构如图所示。
Imports System.IO
2Imports System.Net
3 Imports System.Text
4
具体的读取类实现ReadData方法。下面是从文本文件中读取数据,其中给出了读取用逗号分隔数据的方法:
1
下面是产生读取对象的简单工厂:
1Public Class clsReaDataFactoryClass clsReaDataFactory
2 Pbulic Shared Function getDataReader()Function getDataReader ( ) As clsAbstractReadData
3 Dim datafilepath As String =
4ConfigurationSettings.AppSettings (“DataFilePath”)
5 Dim strDataType As String = ConfigurationSettings.AppSettings (“DataType”)
6Dim strHttp As String = ConfigurationSettings.AppSettings (“DataURL”)
7Select Case strDataType
8 Case “http”
9 Dim mrd As clsReadDataFromRemoteFile
10 Mrd = New clsReadDataFromRemoteFile (strHttp)
11 Return mrd
12 Case Else
13 Dim mrd As clsReadDataFromFile
14 Mrd = New clsReadDataFromFile(datafilepath)
15 Return mrd
16 End Select
17 End Function
18end class
相关文章推荐
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系(转)
- 设计模式学习(十二):桥接模式
- 设计模式笔记16:桥接模式(Bridge Pattern)
- 【软考】设计模式-桥接模式
- 极速理解设计模式系列:7.桥接模式(Bridge Pattern)
- 设计模式---桥接
- 代码设计模式之桥接模式(bridge)
- java设计模式-桥接模式
- java 23种常用设计模式之桥接模式(Bridge)
- .NET设计模式(9):桥接模式(Bridge Pattern)
- c++设计模式--桥接模式
- 设计模式之桥接模式
- 桥接模式-挣钱的设计模式。
- Java 设计模式 之 桥接模式
- C语言和设计模式(桥接模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- Bridge桥接模式 - GoF设计模式(一)
- 设计模式之桥接模式
- C语言设计模式:代理模式、桥接与中介模式 //tbd