从重构的角度学习bridge设计模式

http://tech.ddvip.com   2006年11月24日    社区交流

本文详细介绍从重构的角度学习bridge设计模式

    public class searchFactory{
public static searchDB createSearch(int DBType){
if(DBType.equal("oracle")){
return searchDBOracleImpl();
}else if(DBType.equal("sybase")){
return searchDBSysbaseImpl();
}
}
}
于是我们的查询代码可以改变为这样了;
public class SearchAction(){
  public Vector searchData(string ActionType,String DbType){
String SQL="";
if(ActionType.equal("查找客户信息")){
//如果是查询客户信息,拼SQL语句从客户表中读取数据
SQL="select * from Customer "
searchDB obj=searchFactory.createSearch(DbType);
return obj.searchFromDB(SQL);
  }else if(ActionType.equal("查找帐户信息")){
//如果是查询帐户信息,拼接SQL语句从帐户表中读取数据
SQL="select * from Account "
searchDB obj=searchFactory.createSearch(DbType);
return obj.searchFromDB(SQL);
}
}
}

  是不是简单一些,如果增加一个新的数据库,对我们只需增加一个新的数据库实现便可,老的代码,不需改变,这样便实现开-闭原则(Open-closed原则),在我们的查询查询中使用的是接口,这就是设计模式的原则,针对接口进行编程,并且使用聚合,而不是直接的继承大家,可以考虑使用继承来完成该工作怎样实现。上面是把实现进行分离,实现可以动态变化!

  我们把查询的操作的具体数据库实现进行了分离,增强了灵活性,但是我们的查询。仍然使用了if else这样仍然不易进行扩展,于是我们进行抽象一个查询操作的过程,把它分成几个具体步骤,创建SQL语句,发送到数据库,执行查询,返回结果。

责编:豆豆技术应用

正在加载评论...