// Java Builder 模式示例代码
// 定义一个复杂的对象类,使用Builder模式来简化创建过程
public class Meal {
private final String burger;
private final String drink;
private final String side;
private final String dessert;
// 私有构造函数,只能通过Builder来创建Meal对象
private Meal(Builder builder) {
this.burger = builder.burger;
this.drink = builder.drink;
this.side = builder.side;
this.dessert = builder.dessert;
}
// Getter方法用于获取属性值
public String getBurger() {
return burger;
}
public String getDrink() {
return drink;
}
public String getSide() {
return side;
}
public String getDessert() {
return dessert;
}
// 静态内部类Builder,用于构建Meal对象
public static class Builder {
private String burger;
private String drink;
private String side;
private String dessert;
// 构造函数可以设置必填项
public Builder(String burger) {
this.burger = burger;
}
// Setter方法用于设置可选项,并返回Builder本身以支持链式调用
public Builder drink(String drink) {
this.drink = drink;
return this;
}
public Builder side(String side) {
this.side = side;
return this;
}
public Builder dessert(String dessert) {
this.dessert = dessert;
return this;
}
// build方法用于创建最终的Meal对象
public Meal build() {
return new Meal(this);
}
}
// 示例用法
public static void main(String[] args) {
// 使用Builder模式创建一个Meal对象
Meal meal = new Meal.Builder("Cheeseburger")
.drink("Coke")
.side("Fries")
.dessert("Ice Cream")
.build();
// 打印Meal对象的属性
System.out.println("Burger: " + meal.getBurger());
System.out.println("Drink: " + meal.getDrink());
System.out.println("Side: " + meal.getSide());
System.out.println("Dessert: " + meal.getDessert());
}
}
Meal类的构造函数是私有的,这意味着不能直接通过new Meal()来创建对象。而是必须通过Builder类来创建。Meal类的一个静态内部类,它提供了链式调用来设置Meal对象的各个属性。每个setter方法都返回Builder对象本身,以便可以连续调用多个setter方法。build()方法来创建最终的Meal对象。main方法中,展示了如何使用Builder模式来创建一个Meal对象,并打印其属性。这种方式使得创建复杂对象的过程更加清晰和灵活,尤其是在对象有很多可选参数的情况下。
上一篇:java copy对象
下一篇:java生成唯一id
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站