【设计模式】模板设计模式与适配器设计模式

本文探讨了模板设计模式和适配器设计模式。模板模式提供了一种在父类中定义算法骨架,由子类实现具体步骤的方法,提高代码复用性和扩展性。适配器模式则用于解决接口不兼容问题,通过转换接口使得不同系统或类能够协同工作。两种模式在MyBatis、JDK、Spring等框架中有广泛应用,并各自具有优缺点。
摘要由CSDN通过智能技术生成

1、模板设计模式

赵本山问宋丹丹: “如何把大象放进冰箱?”宋丹丹回答:“第一步:打开冰箱门,第二步:把大象塞进 冰箱,第三步:关闭冰箱门”。赵本山再问:“怎么把长劲鹿放进冰箱?”宋丹丹答: “第一步:打开冰箱门,第二步:把大象拿出来,第三步:把长劲鹿塞进去,第四步: 关闭冰箱门”(如下图所示),这些都是模板模式的体现。

模板设计模式通常又叫做模板方法设计模式,是指定义个算法骨架,允许子类为一个或者多个步骤提供实现。模板方法使得子类在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为设计模式。

适用场景:

(1)一次性实现算法的不变部分,将可变的部分留给子类实现;

(2)各个子类中提取出公共行为,向上提取到公共的父类中,从而实现 代码复用。

模板模式在经典框架mybaties中的的应用:

BaseExecutor是一个基础类,实现了大部分的SQL实行流程和逻辑,如获取事物、关闭连接等,将处理不同的细节抽象,交给子类实现,下面是子类需要试下的抽象方法。

public abstract class BaseExecutor implements Executor {

    protected abstract int doUpdate(MappedStatement var1, Object var2) throws SQLException;

    protected abstract List<BatchResult> doFlushStatements(boolean var1) throws SQLException;

    protected abstract <E> List<E> doQuery(MappedStatement var1, Object var2, RowBounds var3, ResultHandler var4, BoundSql var5) throws SQLException;

}

下面看看BaseExecutor的子类有那些?

下面看看doUpdate方法的实现

​
public class SimpleExecutor extends BaseExecutor {
    public SimpleExecutor(Configuration configuration, Transaction transaction) {
        super(configuration, transaction);
    }

    public int doUpdate(MappedStatement ms, Object parameter) throws SQLException {
        Statement stmt = null;

        int var6;
        try {
            Configuration configuration = ms.getConfiguration();
            StatementHandler handler = configuration.newStatementHandler(this, ms, parameter, RowBounds.DEFAULT, (ResultHandler)null, (BoundSql)null);
            stmt = this.prepareStatement(handler, ms.getStatementLog());
            var6 = handler.update(stmt);
        } finally {
            this.closeStatement(stmt);
        }

        return var6;
    }
   .................
}

public class BatchExecutor extends BaseExecutor {
    public static final int BATCH_UPDATE_RETURN_VALUE = -2147482646;
    private final List<Statement> stat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值