什么是建造者模式?他在jdk、MyBatis源码怎么运用?( 三 )


  • 1、相同的方法 , 不同的执行顺序需要产生不同的执行结果
  • 2、产品类非常复杂 , 调用不同的零件或者按照不同的顺序来组装产品后需要得到不同的产品
  • 3、当初始化一个对象非常复杂 , 而且很多参数都具有默认值
建造者模式在源码中体现建造者模式在源码中使用也很普遍:
  • 1、jdk源码中 , StringBuilder类,append方法就是给我们提供了一种链式创建对象的方法:

什么是建造者模式?他在jdk、MyBatis源码怎么运用?文章插图
然后toString方法返回了一个完整的对象:
什么是建造者模式?他在jdk、MyBatis源码怎么运用?文章插图
  • 2、MyBatis中SqlSessionFactoryBuiler中就用到了建造者模式 。

什么是建造者模式?他在jdk、MyBatis源码怎么运用?文章插图
上面就是构建一个SqlSessionFactory对象的方法 , 我们看到里面的XMLConfigBuilder其实就是一个具体建造者角色 , 而其父类BaseBuilder就是一个抽象建造者角色 。 下图就是BaseBuilder和其部分子类(为了方便截图 , 没有显示出所有子类):
什么是建造者模式?他在jdk、MyBatis源码怎么运用?文章插图
还有一种写法大家应该都非常熟悉的Example , 就是经典的链式写法build出来一个完整的sql语句 , 类似的还有Condition 。
什么是建造者模式?他在jdk、MyBatis源码怎么运用?文章插图
建造者模式优缺点建造者模式的优点有:
  • 1、封装性好 , 创建和使用分离
  • 2、扩展性好 , 建造类之间独立 , 一定程度上实现了解耦
建造者模式的缺点有:
  • 1、产生多余的Builder对象
  • 2、产品内部发生变化时 , 建造者都需要修改 , 成本较大
建造者模式和工厂模式区别建造者模式优点类似于工厂模式 , 都是用来创建一个对象 , 但是他们还是有很大的区别 , 主要区别如下:
  • 1、建造者模式更加注重方法的调用顺序 , 工厂模式注重于创建完整对象
  • 2、建造者模式根据不同的产品零件和顺序可以创造出不同的产品 , 而工厂模式创建出来的产品都是一样的
  • 3、建造者模式使用者需要知道这个产品有哪些零件组成 , 而工厂模式的使用者不需要知道 , 直接创建就行
作者:双子孤狼
【什么是建造者模式?他在jdk、MyBatis源码怎么运用?】原文链接: