【每日学设计模式——创建型模式】 建造者模式

建造者模式用于创建复杂类的实例,通过设计Builder来隔离构建过程和实现细节。相比工厂模式,它更专注于简化多参数实例化。Lombok的@Builder注解是建造者模式的一个常见应用,提供了一种原子化构建对象的方式,尤其适用于初始化过程复杂和参数过多的场景。然而,建造者模式也存在性能消耗和代码冗余的问题。
摘要由CSDN通过智能技术生成

菜鸟教程链接:建造者模式

概念

建造者模式针对于实例创建复杂且或包含繁多组合可能性的类,通过设计一个builder对象,讲类的创建过程交由builder来处理,从而将类复杂的实现和其表现抽离开来。这种模式跟工厂模式的区别在于,工厂模式侧重点在于把类的实例化过程与外部隔离,交由工厂类去执行。而建造者模式的侧重点在于将类复杂多样的实例过程作简化。
除了菜鸟教程里面的表示外,还有一种常见的使用场景如下:
对于建造者模式,日常开发中接触最多的便是Lombok这一技术,这一技术很好的扩展了创建对象时具有大量可选参数的场景。比如一个类具有十个成员变量,如果我们希望每一种初始化情况都要有对应的构造方法,那么我们要提供的重载构造方法无疑是无比繁多的;如果我们通过先调用无参构造再通过setter方法赋值,那么就会导致一个类的创建到我们期望状态的过程将不会是一个原子化的过程(即该对象无法直接从无到我们期望的状态,必须经过多个setter的过程),这就会导致该类在多线程状态时可能会有异常发生。
于是我们可以用到builder,作为一个可变参数的容器,具有对应类相同的参数作为成员变量,而类的创建只需要一个包含该容器的方法即可。我们将需要的成员变量传递给builder,而builder会根据我们调用的对应方法将元素赋值给对应的变量,而在最后执行build方法时将自身传递给类去实例化(或者直接去调用其全参构造),在类的构造方法中从builder对象中获取所有的参数去创建自身。即可实现一个原子化过程的可变参数构造器。

优缺点

优点:
1: 参数可变,易独立和扩展
2:简便实例化过程,并实现了其原子化
缺点:
1: 创建对象时需要创建对应的builder对象,增加了性能消耗。
2:当参数不多时,它不值得使用,因为会比重叠构造器更加冗长。

适用场景

初始化过程复杂,或者参数过多的情况

示例代码

可以看一个使用了Lombox的@Builder注解的类生成的class,其内部生成了具有相同成员变量的Builder内部类,而自身仅仅只需要一个全参构造即可实现原子化的所有参数可能。

//
// Source code recreated from a .class file by IntelliJ IDEA
// 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值