mybatis 源码系列(六) 设计模式

更多mybatis 源码系列文章可关注我的博客,点击前往

以前我们在学习Java的时候,都会将Java中的设计模式,记忆中用的比较多的好像有23种吧,但是这些设计模式其实自己在工作中除了那么几种几乎很少用到.

不过最近在看mybatis的源码,看到了很多设计模式的应用,因此,想把这些在mybatis中运用的设计模式都记录下来,加深自己的印象和理解,后面也可以在工作中更多的去使用它

写代码是们艺术活

你是否会看某些代码而入迷呢?

Builder模式

提供一个Builder建造器,通过隐藏目标对象的复杂属性,而是通过Bulder来一步一步赋值目标对象属性,最终Builder构建目标对象,这个在mybatis中的Envionment类中的Builder已使用

先来看org.apache.ibatis.mapping.Envionment.java

/**
 * 环境对象
 * @author Clinton Begin
 */
public final class Environment {
  /***
   * 环境id,例如:dev、prod
   */
  private final String id;
  /***
   * 事务工厂
   */
  private final TransactionFactory transactionFactory;
  /***
   * 数据库连接数据源对象
   */
  private final DataSource dataSource;
 //getter and setters and  constructs   
    
    /***
   * Builder构造器
   * 比如
   * new Builder("dev").dataSource(ds).transactionFactory(tf).build();
   */
  public static class Builder {
      private String id;
      private TransactionFactory transactionFactory;
      private DataSource dataSource;

    public Builder(String id) {
      this.id = id;
    }

    public Builder transactionFactory(TransactionFactory transactionFactory) {
      this.transactionFactory = transactionFactory;
      return this;
    }

    public Builder dataSource(DataSource dataSource) {
      this.dataSource = dataSource;
      return this;
    }

    public String id() {
      return this.id;
    }

    public Environment build() {
      return new Environment(this.id, this.transactionFactory, this.dataSource);
    }

  }
    
}

通过上面的Builder,我们就可以使用这一的代码来构建我们的Environment对象

//属性之数据源
DataSource dataSource=null;
//属性之事务管理器
TransactionFactory transactionFactory=null;
//基于Builder来构建
Environment environment=new Environment.Builder("dev").dataSource(dataSource).transactionFactory(transactionFactory).build();
//根据构造函数来构建
Environment environment1=new Environment("prod",transactionFactory,dataSource);

这只是提供了一种快捷的创建对象的方式,最终build()方法也是调用目标对象的构造函数来进行构建,根据开发者喜欢可以自行使用.

待续…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值