Builder设计模式
背景
当一个java对象有大量的成员变量,在构造它的时候有以下几种方式
1.构造方法传参 缺点:代码难以编写,难以阅读)
2.使用get set方法:缺点:每个set只操作一个属性 没有相近属性进行更好的封装
3.builder构造器
build构造器
builder构造器会把类的成员变量分成好几类
比如人的姓名,年龄和id是基础信息,这三个信息可以抽象成一个构造方法
身高和体重 抽象成一个外形的构造方法。
代码如下
public static class PersonBuilder { Person p = new Person(); public PersonBuilder basicInfo(int id, String name, int age) { p.id = id; p.name = name; p.age = age; return this; } public PersonBuilder appearancen (double weight,double height) { p.weight = weight; p.height = height; return this; } public Person build() { return p; } }
我们则可以使用构造器构造对象
Person p = new Person.PersonBuilder() .basicInfo(1, "zhangsan", 18) .appearancen (120,170) .build();
个人观点:构造器就是对set方法的一个封装,把相近set的方法封装在一个builder方法里面