java设计模式(4) - 模板方法

定义: 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。
    模板去定义动作,子类或使用的类去执行特定的操作。

模板方法的两种实现方式:
    1. 在父类中定义方法,子类根据自己的需要去实现具体的方法。(参照:httpServlet)
    2. 定义一个模板类,去执行各种动作,暴露回调函数让调用者去执行具体步骤。

使用场景:
        用于重构同种类型的重复代码。把重复代码抽到模板中,不同的部分在回调中具体实现。

好处:重构代码,增加代码的复用性。

下面实现一个简单的DbTemlate


/**
 * 模板类
 * @author jiangwei
 *
 */
public class DbTemplate {
 
 /**
  * 查询
  * @param <T>
  * @param clazz
  * @param sql
  * @param callBack
  * @return
  */
 public static <T> T   getModel(Class<T> clazz, String sql, CallBack<T> callBack) {
  Connection conn = null;
     PreparedStatement st = null;
     T t = null;
     try {
         conn = null; //TODO
         st = conn.prepareStatement(sql);
         callBack.setParameter(st);
         ResultSet rs = st.executeQuery();
         while(rs.next())
         {
            t = callBack.setBean(rs);
         }
     } catch (Exception e) {
         throw new RuntimeException(e);
     }
  return t;
 }
}

/**
 * 回调类
 * @author jiangwei
 *
 * @param <T>
 */
public interface CallBack<T> {

 /**
  * 设置参数
  * @param st
  */
 void setParameter(PreparedStatement st);

 /**
  * 装载bean
  * @param rs
  * @return
  */
 T setBean(ResultSet rs);
 
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值