(构建模式)

消除一切重复代码,消除一切if-else,这就是我们的目标。

在网上看到的关于builder的模式一般会有两个。

一个是关于java bean的链式 调用结构,就是

Bean A = Bean.Builder().url(1). para(2).id(3).create();

这种方式的builder 采用了链式结构,链式结构目前是比较流行的,向java8 的stream 都是链式的 api、

为什么链式流行? 我个人认为有几点?

- 链式 是一种自然的表达,符合阅读习惯,都说代码是交流的艺术,那么链式代码 很符合这一定位。

- 简洁,1行代码搞定。

另外一个就是对于 一个复杂的对象,可能有 N 个 参数,需要最小的参数是 3个,那么可以写非常多的构造函数,这是显然不合适的,

使用 builder模式可以做到一个按需 生成对象的作用。需要哪个参数,就链式调用一下那个方法。

其实,builder 模式构建复杂的javabean只是 一个应用。对于一个java bean,如果不用 builder模式也完全可以构建出流式代码

比如  return this. 之后就可以 不断的 链式调用 set 方法。

setURL(url){

    this.url = url;

  return this;

builder 模式的另外一个作用在于封装 不同方式的 构建。

设想一下,有一个复杂的指标对象, 可能有表格指标,时序指标。

每个指标有 5个字段,对于表格和时序指标,每个字段赋值的方式是不一样的。

那么这个时候,就需要使用真正的 builder模式了。

interface builder{

 setField1

setField2

setField5

时序Builder implemnt builder

表格 Builder implemnt builder

这样client 就可以根据需要构建不同的指标。

未来如果有不同的指标,只需要实现不同的builder 就可以了。

从上面的列子可以看出, builder 模式之于对象,其实有两个方面的作用:

1.  以简洁可读的链式结构构建 对象的内部字段

2. 如果对象有多种表现方式,可以使用不同的builder,封装未来的变化。

你可能感兴趣的:((构建模式))