建造者模式

为什么要用建造者模式,例如Person p=new Person(10个参数),这样会很头疼,参数一多,无法分辨

灵活性:可以按需设置,无需定义多个构造方法

可读性:链式调用使代码简介名了

扩展性:如果增加了新属性,只需要在Builder中添加相应的方法

public class Person {

// 属性

private String name;

private int age;

private String email;

// 私有构造函数,防止直接实例化

private Person(Builder builder) {

this.name = builder.name;

this.age = builder.age;

this.email = builder.email;

}

// Getter 方法

public String getName() {

return name;

}

public int getAge() {

return age;

}

public String getEmail() {

return email;

}

// 静态内部类 Builder

public static class Builder {

private String name;

private int age;

private String email;

// 设置 name 并返回 Builder 对象

public Builder setName(String name) {

this.name = name;

return this;//this指代当前Builder对象

}

// 设置 age 并返回 Builder 对象

public Builder setAge(int age) {

this.age = age;

return this;

}

// 设置 email 并返回 Builder 对象

public Builder setEmail(String email) {

this.email = email;

return this;

}

// 构建 Person 对象

public Person build() {

return new Person(this);

}

}

@Override

public String toString() {

return "Person{" +

"name='" + name + '\'' +

", age=" + age +

", email='" + email + '\'' +

'}';

}

}

使用方式

public class Main {

public static void main(String[] args) {

// 使用建造者模式构造 Person 对象

Person person = new Person.Builder()

.setName("John Doe")

.setAge(30)

.setEmail("john.doe@example.com")

.build();

// 输出 Person 对象

System.out.println(person);

}

}

相关推荐
hdsoft_huge2 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
风中的微尘2 小时前
39.网络流入门
开发语言·网络·c++·算法
雨白2 小时前
Java 多线程指南:从基础用法到线程安全
android·java
Hungry_Shark2 小时前
IDEA版本控制管理之使用Gitee
java·gitee·intellij-idea
赛姐在努力.2 小时前
《IDEA 突然“三无”?三秒找回消失的绿色启动键、主菜单和项目树!》
java·intellij-idea
未来之窗软件服务2 小时前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
猎板PCB黄浩3 小时前
从废料到碳减排:猎板 PCB 埋容埋阻的绿色制造革命,如何实现环保与性能双赢
java·服务器·制造
ZzzK,3 小时前
JAVA虚拟机(JVM)
java·linux·jvm
西红柿维生素3 小时前
JVM相关总结
java·jvm·算法
小冯记录编程3 小时前
C++指针陷阱:高效背后的致命危险
开发语言·c++·visual studio