Java设计模式-建造者模式

建造者模式

什么是建造者模式?

  • 在mybatis处理mybatis-config.xml等映射配置文件时,会在内存中创建相应的配置对系对象,该过程使用了建造者模式

  • 建造者模式(也被称为生成器模式)将一个复杂对象的构建过程与它的表示分离,从而使得同样的构建过程可以创建不同的表示。建造者模式将一个复杂对象的创建过程分成了一步步简单的步骤,用户只需要了解复杂对象的类型和内容,而无须关注复杂对象的具体构造过程,帮助用户屏蔽掉了复杂对象内部的具体构建细节。

    在这里插入图片描述

  • 建造者模式中的主要角色:

    • 建造者(Builder)接口:Builder接口用于定义建造者构建产品对象的各部分行为
    • 具体建造者(ConcreteBuilder)角色:在建造者模式中,直接创建产品对象的是具体建造者。具体建造者类必须实现建造者接口所要求的两类方法:一类是建造方法,例如图中的buildPart1()、buildPart2()等方法;另一类是获取构建好的产品对象的方法,例如图中的getProduct()方法
    • 导演(Director)角色:该角色会通过调用具体建造者,创建需要的产品对象
    • 产品(Product)角色:产品对象就是用户需要使用的复杂对象

建造者模式的优点

  • 建造者模式中的导演并不需要知道产品类中的内部细节,它只需要提供需要的信息给建造者,由具体建造者处理这些信息(这个处理过程可能会比较复杂)并完成产品构造。这就使产品对象的上层代码与产品对象的创建过程解耦。
  • 建造者模式将复杂产品的创建过程分散到了不同的构造步骤中,这样可以对产品创建过程实现更加精细的控制,也会使创建过程更加清晰。
  • 每个具体建造者都可以创建出完整的产品对象,而且具体建造者之间是相互独立的,因此系统就可以通过不同的具体建造者,得到不同的产品对象。当有新产品出现时,无需修改于原有的代码,只需要添加新的具体建造者即可完成扩展,这符合“开放-封闭”原则

建造者模式的缺点

  • 它所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用建造者模式。
  • 如果产品种类较多,且内部变化复杂,就需要定义多个具体建造者来实现这种变化,导致整个系统变得很复杂,不易于理解。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值