什么是建造者模式?他在jdk、MyBatis源码怎么运用?( 三 )
- 1、相同的方法 , 不同的执行顺序需要产生不同的执行结果
- 2、产品类非常复杂 , 调用不同的零件或者按照不同的顺序来组装产品后需要得到不同的产品
- 3、当初始化一个对象非常复杂 , 而且很多参数都具有默认值
- 1、jdk源码中 , StringBuilder类,append方法就是给我们提供了一种链式创建对象的方法:
文章插图
然后toString方法返回了一个完整的对象:
文章插图
- 2、MyBatis中SqlSessionFactoryBuiler中就用到了建造者模式 。
文章插图
上面就是构建一个SqlSessionFactory对象的方法 , 我们看到里面的XMLConfigBuilder其实就是一个具体建造者角色 , 而其父类BaseBuilder就是一个抽象建造者角色 。 下图就是BaseBuilder和其部分子类(为了方便截图 , 没有显示出所有子类):
文章插图
还有一种写法大家应该都非常熟悉的Example , 就是经典的链式写法build出来一个完整的sql语句 , 类似的还有Condition 。
文章插图
建造者模式优缺点建造者模式的优点有:
- 1、封装性好 , 创建和使用分离
- 2、扩展性好 , 建造类之间独立 , 一定程度上实现了解耦
- 1、产生多余的Builder对象
- 2、产品内部发生变化时 , 建造者都需要修改 , 成本较大
- 1、建造者模式更加注重方法的调用顺序 , 工厂模式注重于创建完整对象
- 2、建造者模式根据不同的产品零件和顺序可以创造出不同的产品 , 而工厂模式创建出来的产品都是一样的
- 3、建造者模式使用者需要知道这个产品有哪些零件组成 , 而工厂模式的使用者不需要知道 , 直接创建就行
【什么是建造者模式?他在jdk、MyBatis源码怎么运用?】原文链接:
推荐阅读
- 黑鲨4pro什么时候出多少钱,黑鲨4pro价格参数介绍
- 为什么有"iphone是穷人手机"的言论?用万元机的人真穷吗
- 极速鲨课堂89:主板名字带WIFI和不带有什么区别
- 比起007,996真的是福报!互联网大厂为什么加班都这么狠?
- vivo追求的本原设计是什么?X60 Pro给出了答案
- 运动计数开发项目的对抗赛:飞算全自动软件工程平台碾压传统模式
- iQOO 7邀请函曝光“马”“鸭”“羊”代表什么
- 莆田:科技与创意引领制鞋新模式
- 华为开启“暴走”模式!三个大动作同时展开,国产芯片将迎来破冰
- 近期浙江引来这么多重磅级“帮手”传递什么信号?