标签:String day07 Builder 09 建造 private public Person builder
Person
package day07.java8.pattern.builder;
import lombok.Data;
import java.util.Date;
/*
建造者模式:
Person.of().Name("zs").Ip("127.1.1").Age(18).Pwd("1234").build();
1、核心思想,将Person转成一个中间类Builder,然后构建builder,再返回Person对象
2、Person.of().Name("zs").Ip("127.1.1").Age(18).Pwd("1234").build();
Person.of()=》转成中间类Builder
Name("zs").Ip("127.1.1").Age(18).Pwd("1234")=>构建中间类
.build()=》 中间类转成person
*/
@Data
public class Person {
private String name;
private int age;
private char sex;
private String ip;
private String pwd;
private Date birthday;
// 构造器,给Builder转成Person用的
private Person(Builder builder){
this.name =builder.name;
this.age = builder.age;
this.sex = builder.sex;
this.ip = builder.ip;
this.pwd = builder.pwd;
this.birthday=builder.birthday;
}
// 将Person转成Builder
// 这里用【转成】其实不太精确
// 这里没有涉及到Person与Builder之间的转换
// 这里单纯就是创建一个Builder。转换在后面的步骤
public static Builder of() {
Builder builder = new Builder();
return builder;
}
// 静态内部类
public static class Builder {
private String name;
private int age;
private char sex;
private String ip;
private String pwd;
private Date birthday;
// 将当前的Builder转成Person
public Person build() { // 创建person的方法
return new Person(this);// 创建person,传入builder
}
// 成员变量,只生成set方法
// 给Builder设置成员变量
//然后返回当前的类Builder
public Builder Name(String name) {
this.name = name;
return this;
}
public Builder Age(int age) {
this.age = age;
return this;
}
public Builder Sex(char sex) {
this.sex = sex;
return this;
}
public Builder Ip(String ip) {
this.ip = ip;
return this;
}
public Builder Pwd(String pwd) {
this.pwd = pwd;
return this;
}
public Builder Birthday(Date birthday) {
this.birthday = birthday;
return this;
}
}
}
调用
package day07.java8.pattern.builder;
public class TestPerson {
public static void main(String[] args) {
Person person = Person.of().Name("zs").Ip("127.1.1").Age(18).Pwd("1234").build();
System.out.println("person = " + person);
}
}
标签:String,day07,Builder,09,建造,private,public,Person,builder 来源: https://blog.csdn.net/qq_39208536/article/details/122762870
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。