Builder模式

2019-02-19  本文已影响1人  肖雨San

sample:

public class User {

    private String name;

    private int age;

    ...

    public User(Builder builder) {

        this.name = builder.name;

        ...

    }

    ...

    public class Builder {

        private String name;        

        private int age;

        ...

        public Builder name(String name) {         

            this.name = name

        }

        ...

        public User build() {

            return new User(this);

        }

    }

}

new User.Builder().name("王五").age(20) .phone("123456789") .address("亚特兰蒂) .build();

设计初衷:

public User(String firstName, String lastName, int age, String phone, String address) 

一般设计类的构造函数进行实例化,属性越多意味设计更多的构造的函数来应对所有情况。

或者使用一个基本构造函数,其他属性通过get,set操作(属性public化)。

那如何既想一条语句完成创建对象,有不想创建后被修改属性?

Builder模式将一个类的实例话完全交给了Builder,自己属性和构造函数全部隐藏为private。

划重点:

1.具体Class中只有一个Builder为参数的构造函数

2.Builder的属性与具体Class的属性完全吻合

3.Builder采用链式调用

上一篇 下一篇

猜你喜欢

热点阅读