Builder模式

构造方法的缺陷

开发过程中,我们可能碰到过要创建一个对象,但他的参数非常的多。
直接使用多个参数的构造方法的话,非常的麻烦,而且缺点也很明显的:

  1. 非常的不直观,看代码的人,如果不去对照的话,很难搞清楚每个参数具体的含义
  2. 容易传错值
  3. 不想赋值的也不得不传入一个null
  4. 想要增加参数的时候非常的麻烦,只能重载一个方法,或者把所有调用的地方都多传一个null

Builder模式

使用Builder模式可以解决以上的这些问题。

  1. 由于设置每个参数都提供了一个方法,通过名字可以很清楚的看出来参数的含义
  2. 通过方法名,可以很容易看出来要传的参数
  3. 不想赋值的参数,不调用方法即可
  4. 增加参数,并不会影响已经调用的地方,直接增加参数以及对应的方法即可

而且Builder模式还采用链式的写法,让你一爽到底!

Builder的缺点

当然,Builder模式也有缺点:

  1. 代码非常的冗长
  2. 写起来非常的麻烦

不过这两个缺点也是可以接受的

  1. 虽然增加了代码量,是可读性却大大的增加了,可读性vs代码量,当然还是可读性重要些
  2. 书写麻烦的问题其实可以通过工具来解决,比如Android Studio就提供了自动生成Builder的插件,在插件中搜索InnerBuilder即可下载该插件,在需要生成Builder的类中使用alt+insert即可轻松生成。

与setter的对比

看到这里可能你会有一个疑问,就是Builder模式做的事情,好像使用setter就可以实现了。
我个人觉得,Builder模式相比setter的一个优势或者说不同点是他的不可变性。使用Builder模式创建后,你无法直接修改对象的属性,只能重新创建一个实例。所以他非常适合用于那些初始化后就不需要再进行修改的情况。而setter的优势是,可以随时的对值进行修改。两者的使用场景还是有些许的不同的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容