【原】使用Builder模式替代构造参数传参

2017-05-06 02:40

   之前开启线程的时候习惯是用一个类实现runnable,然后new Thread( runnable).start开启线程,或者放到线程池里执行。如果想要把参数传递过去的则在实现runnable的类里面写一个构造方法,里面放需要传入的参数,最后通过new xxxx(String a, String b, String c)这种方式传入。 如果参数多会很混乱,而且结构不清晰,其他要引用的类也需要按照对应构造参数进行传参,没办法做到需要什么传递什么,扩展性不好。 刚好学习了下builder模式,顺便运用了一下。案例如下:

  

  •    没用 builder 之前是这样传参的:

  • 【原】使用Builder模式替代构造参数传参0

     

  • 用了Builder模式之后是这样的

     【原】使用Builder模式替代构造参数传参1

  • 【原】使用Builder模式替代构造参数传参2

    上面代码中 通过静态内部类进行不同参数的构建,然后返回一个新的对象,对象里面存放的是Builder静态类,然后在新的对象内部把值赋给当前类的成员变量,如下图:

  • 【原】使用Builder模式替代构造参数传参3

     

  •  总结:

    相比只通过一个构造器创建实例,JavaBean模式的实例的构造过程被分成了好几个过程。

    我们完全有可能在属性不完整的情况下使用这个实例。

    当然,Builder也有缺点。

    缺点1.创建实例前都要创建一个Builder实例。

    缺点2.Builder模式编写起来较为冗长。

    但是,当构建一个实例需要很多步骤(或者很多让人混淆的参数)的时候,Builder模式是个不错的选择。