桥梁设计模式

如果有很多对象要处理,而又有很多操作要做。这时可以考虑使用桥梁的设计模式,将对象与操作相互分离,都做抽象,然后分别由实现类进行组合。完成所需要的要求。
下面的实例引用自
http://wenku.baidu.com/view/2911fc4f2e3f5727a5e9622e.html
现在我们有很多表要处理,同时又有很多操作要做。最简单的做法是在一个类里做完所有的操作,如我们在EJB服务器端的实现中进行JDBC操作。可是这样一来这个类将无比巨大,大到四只眼(眼睛兄)都看不过来!有什么好办法能够降低这样操作的杂乱性呢?我们注意到这里有两个概念,分别是“表单(Table)”和“操作(Operator)”。也就是说这里有两个部分——“抽象”和“实现”。我们将这两个部分进行分离,然后根据需要,分别继承和实现表单和操作。这样我们就可以方便地通过表单和操作的组合来实现我们的工作了。

操作如:
java 代码
 
Table tbl1 = new Table1(new Insert());  
tbl1.work();  
  
Table tbl2 = new Table2(new Update());  
tbl2.work();  
Table1和Table2都是Table的子类,他们都映射到数据库中特定的表。Insert和Update都是接口Operator的实现,分别完成特定的数据库操作。好了,下面来先看看Operator的实现代码。
java 代码
 
public interface Operator {  
    /** 
     * 操作 
     *  
     * @param arg 传入的参数 
     * @return 操作结果 
     */  
    String work(String arg);  
}  
我们需要能对数据库进行插入和修改操作,因此分别建立Insert和Update类。
java 代码
 
// 插入操作  
public class Insert implements Operator {  
  
    public String work(String arg) {  
        String rs = "insert " + arg;  
        return rs;  
    }  
  
}  

java 代码
 
// 修改操作  
public class Update implements Operator {  
  
    public String work(String arg) {  
        String rs = "update " + arg;  
        return rs;  
    }  
  
}  
好了,我们再来看看抽象部分的实现。这里我们的对象是Table。
java 代码
 
public abstract class Table {  
    // 内置一个操作接口  
    protected Operator impl = null;  
  
    public Table(Operator impl) {  
        this.impl = impl;  
    }  
  
    /** 
     * 由子类来具体实现此操作 
     */  
    public abstract void work();  
  
}  
现在我们有两个表单需要进行操作,他们分别是Table1和Table2。
java 代码
 
public class Table1 extends Table {  
  
    public Table1(Operator impl) {  
        super(impl);  
    }  
 
    public void work() {  
        System.out.println(this.impl.work("Table1"));  
    }  
  
}  

java 代码
 
public class Table2 extends Table {  
  
    public Table2(Operator impl) {  
        super(impl);  
    }  
  
    public void work() {  
        System.out.println(this.impl.work("Table2"));  
    }  
  
}  
这样我们在进行数据库的操作的时候,便可以随意地根据实际情况进行表单与操作的组合,将表单与操作桥接在一起来完成我们的任务。
java 代码
 
// 对table1进行插入操作  
Table tbl1 = new Table1(new Insert());  
tbl1.work();  
  
// 对table2进行修改操作  
Table tbl2 = new Table2(new Update());  
tbl2.work();  
Bridge设计模式感觉上是通过将对象与操作进行分离,然后对这两个基本概念进行继承及实现,通过对对象及操作的各种组合来完成相应的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值