Bridge - 桥接模式

本文介绍了一种利用桥接(Bridge)设计模式简化复杂数据库操作的方法。通过将表单(Table)与操作(Operator)分离,实现了两者的独立变化,从而降低了单一类处理多种数据库操作时的复杂度。

意图
将抽象部分与它的实现部分分离,使它们都可以独立地变化。(GoF)


场景
现在我们有很多表要处理,同时又有很多操作要做。最简单的做法是在一个类里做完所有的操作,如我们在EJB服务器端的实现中进行JDBC操作。可是这样一来这个类将无比巨大,大到四只眼(眼睛兄)都看不过来!

有什么好办法能够降低这样操作的杂乱性呢?我们注意到这里有两个概念,分别是“表单(Table)”和“操作(Operator)”。也就是说这里有两个部分——“抽象”和“实现”。我们将这两个部分进行分离,然后根据需要,分别继承和实现表单和操作。这样我们就可以方便地通过表单和操作的组合来实现我们的工作了。

操作如:

java 代码
  1. Tabletbl1=newTable1(newInsert());
  2. tbl1.work();
  3. Tabletbl2=newTable2(newUpdate());
  4. tbl2.work();


Table1和Table2都是Table的子类,他们都映射到数据库中特定的表。Insert和Update都是接口Operator的实现,分别完成特定的数据库操作。

好了,下面来先看看Operator的实现代码。

java 代码
  1. publicinterfaceOperator{
  2. /**
  3. *操作
  4. *
  5. *@paramarg传入的参数
  6. *@return操作结果
  7. */
  8. Stringwork(Stringarg);
  9. }


我们需要能对数据库进行插入和修改操作,因此分别建立Insert和Update类。

java 代码
  1. //插入操作
  2. publicclassInsertimplementsOperator{
  3. publicStringwork(Stringarg){
  4. Stringrs="insert"+arg;
  5. returnrs;
  6. }
  7. }

java 代码
  1. //修改操作
  2. publicclassUpdateimplementsOperator{
  3. publicStringwork(Stringarg){
  4. Stringrs="update"+arg;
  5. returnrs;
  6. }
  7. }


好了,我们再来看看抽象部分的实现。这里我们的对象是Table。

java 代码
  1. publicabstractclassTable{
  2. //内置一个操作接口
  3. protectedOperatorimpl=null;
  4. publicTable(Operatorimpl){
  5. this.impl=impl;
  6. }
  7. /**
  8. *由子类来具体实现此操作
  9. */
  10. publicabstractvoidwork();
  11. }


现在我们有两个表单需要进行操作,他们分别是Table1和Table2。

java 代码
  1. publicclassTable1extendsTable{
  2. publicTable1(Operatorimpl){
  3. super(impl);
  4. }
  5. publicvoidwork(){
  6. System.out.println(this.impl.work("Table1"));
  7. }
  8. }

java 代码
  1. publicclassTable2extendsTable{
  2. publicTable2(Operatorimpl){
  3. super(impl);
  4. }
  5. publicvoidwork(){
  6. System.out.println(this.impl.work("Table2"));
  7. }
  8. }


这样我们在进行数据库的操作的时候,便可以随意地根据实际情况进行表单与操作的组合将表单与操作桥接在一起来完成我们的任务。

java 代码
  1. //对table1进行插入操作
  2. Tabletbl1=newTable1(newInsert());
  3. tbl1.work();
  4. //对table2进行修改操作
  5. Tabletbl2=newTable2(newUpdate());
  6. tbl2.work();


小结
Bridge设计模式感觉上是通过将对象与操作进行分离,然后对这两个基本概念进行继承及实现,通过对对象及操作的各种组合来完成相应的工作。

P.S.一直想不到一个好的例子来说明Bridge模式,今天吃早饭的时候突然想到可以用来应用于数据库操作。这几天就先按照这种想法做一个demo看看效果如何。呵呵,不知道会不会又是一种重复造轮子的行为呢?不过作为一种实践体会我觉得也很值得。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值