1.问题出现
在实际开发中,一个基本类可能有多个属性,那么在设计构造器上,要根据时间情况不断调整或者增加,无形中增加了工作量,如果当一个类属性名很多个,那么写构造器可能会累死
2 问题分析
可不可以使用一个动态的构造器来随意赋值某个属性还可以返回对象呢?
3 问题解决
使用Builder模式建立多属性的可变构造器是非常高效的,下面的例子属性有
private String userName; private int age; private Date birthday;
Builder模式主要是采用了静态内部类的作用来实现的。如图代码
public class BuilderMode { private String userName; private int age; private Date birthday; public BuilderMode(String userName, int age, Date birthday) { this.userName = userName; this.age = age; this.birthday = birthday; } public static class Builder { private String userName; private int age; private Date birthday; public Builder() { } public BuilderMode.Builder setUserName(String userName) { this.userName = userName; return this; } public BuilderMode.Builder setUserAge(int age) { this.age = age; return this; } public BuilderMode.Builder setBirthday(Date birthday) { this.birthday = birthday; return this; } public BuilderMode build() { return new BuilderMode(this.userName, this.age, this.birthday); } }
这样的话 所有的属性都可以间接builder这个内部类来复制(其实是赋值给内部类对象)最后通过build()方法来返回一个类对象(通过自身的值)。
4 问题分析
好处是可以动态来建立某一个类,坏处是内部类要和外部类建立一样多的属性。
我是liter,希望你有所收获
更多java知识,面试,源码分析尽在