设计模式之建造者模式
设计模式 Java 大约 1310 字作用
用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。
案例
通过User.Builder类构建User。
User user = User.builder().name("张三").age(20).city("SH").build();
class User {
private String name;
private int age;
private String city;
public User(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
public static User.Builder builder() {
return new Builder();
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", city='" + city + '\'' +
'}';
}
static class Builder {
private String name;
private int age;
private String city;
public Builder name(String name) {
this.name = name;
return this;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder city(String city) {
this.city = city;
return this;
}
public User build() {
return new User(this.name, this.age, this.city);
}
}
}
源码
java.lang.AbstractStringBuilder#append(java.lang.String)
AbstractStringBuilder是抽象类不能实例化,所以使用StringBuilder来充当Builder角色。
阅读 1626 · 发布于 2019-12-16
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Java 并发编程之 AQS ReentrantLock 公平锁源码解析阅读 1520
-
Linux 之 Ubuntu 安装 JDK 及 JRE阅读 2300
-
从源码到镜像:使用 Docker 多阶段构建 Spring Boot 镜像阅读 710
-
The temporary upload location [xxxRoot] is not valid阅读 2702
-
软考-系统架构设计师:键阅读 2428
-
LRU 算法 Java 实现阅读 844
-
PostgreSQL distinct 和 distinct on 区别阅读 1689
-
软考-系统架构设计师:信息与信息化的概念阅读 1068
-
Spring Boot 自动配置原理阅读 1626
-
macOS 解决 ApacheDirectoryStudio 无法启动问题阅读 321