建造者模式

工厂模式 vs 建造者模式:

  • 工厂模式用来创建不同但是相关类型的对象,由给定的参数来决定创建哪种类型的对象。

  • 建造者模式用来创建一种类型的复杂对象,通过设置不同的可选参数,定制化地创建不同的对象。

如果一个类中有很多属性,为了避免构造函数的参数列表过长(影响代码的可读性和易用性),我们可以通过构造函数(必填属性,以强制创建对象的时候就设置)配合 set() 方法(非必填属性)来解决。但是如果存在以下任意一种情况,就可以考虑使用建造者模式了。

  1. 如果必填属性有很多,那此时构造函数就又会出现参数列表很长的问题。如果通过 set() 方法设置那些必填属性,那校验它们是否已经填写的逻辑就无处安放了

  2. 如果类的属性之间有一定的依赖关系或者约束条件,若继续使用构造函数配合 set() 方法的设计思路,那这些依赖关系或约束条件的校验逻辑就无处安放了

  3. 如果希望创建不可变对象(即对象在创建好之后,就不能再修改内部的属性值了),就不能在类中暴露 set() 方法,此时构造函数配合 set() 方法来设置属性值的方式就不适用了

Last updated