-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUser.java
More file actions
71 lines (61 loc) · 1.57 KB
/
User.java
File metadata and controls
71 lines (61 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package builderpattern2;
public class User {
private String name;
private int age;
private String phone;
//通过一个Builder对象传入多个属性值,可以一次性对User的属性进行赋值
//而且User的构造方法定义成private,意味着不可以在客户端创建User对象,必须通过其建造器Builder来构造
private User(UserBuilder builder){
this.name = builder.name;
this.age = builder.age;
this.phone = builder.phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
//注意定义成static,否则无法在User没实例化前调用这个UserBuilder内部类来对User进行构建
public static class UserBuilder implements Builder {
private String name;
private int age;
private String phone;
public UserBuilder() {
// TODO Auto-generated constructor stub
}
//通过build方法对User的构造方法进行对象注入
@Override
public User build() {
// TODO Auto-generated method stub
User user = new User(this);
return user;
}
//通过以下的三个方法对Builder的属性进行赋值,然后返回Builder的对象。
//实际上就是先对建造器的属性赋值,然后通过建造器携带数据传入User 中,最后用建造器的build方法对User进行实例化
public UserBuilder Name(String name){
this.name = name;
return this;
}
public UserBuilder Age(int age){
this.age = age;
return this;
}
public UserBuilder Phone(String phone){
this.phone = phone;
return this;
}
}
}