java实现建造者设计模式
2024-01-07 17:51:05
java实现建造者设计模式
以下是一个使用 Java 语言实现的建造者模式的示例
①定义Pizza对象
class Pizza {
private String dough;
private String sauce;
private List<String> toppings;
public Pizza(String dough, String sauce, List<String> toppings) {
this.dough = dough;
this.sauce = sauce;
this.toppings = toppings;
}
public String getDough() {
return dough;
}
public void setDough(String dough) {
this.dough = dough;
}
public String getSauce() {
return sauce;
}
public void setSauce(String sauce) {
this.sauce = sauce;
}
public List<String> getToppings() {
return toppings;
}
public void setToppings(List<String> toppings) {
this.toppings = toppings;
}
@Override
public String toString() {
return "Pizza{" +
"dough='" + dough + '\'' +
", sauce='" + sauce + '\'' +
", toppings=" + toppings +
'}';
}
}
Pizza 类是建造者模式的核心类。它定义了 Pizza 对象的属性,并提供了一个构造函数来创建 Pizza 对象。
②定义Pizza对象建造者
class PizzaBuilder {
private String dough;
private String sauce;
private List<String> toppings = new ArrayList<>();
public PizzaBuilder withDough(String dough) {
this.dough = dough;
return this;
}
public PizzaBuilder withSauce(String sauce) {
this.sauce = sauce;
return this;
}
public PizzaBuilder withTopping(String topping) {
this.toppings.add(topping);
return this;
}
public Pizza build() {
return new Pizza(dough, sauce, toppings);
}
}
PizzaBuilder 类是 Pizza 类的建造者类。它提供了一系列方法来设置 Pizza 对象的属性,并提供了一个 build() 方法来创建 Pizza 对象。
③使用建造者构建Pizza对象
public class Main {
public static void main(String[] args) throws Exception {
PizzaBuilder pizzaBuilder = new PizzaBuilder();
pizzaBuilder.withDough("Thin crust");
pizzaBuilder.withSauce("Tomato");
pizzaBuilder.withTopping("Pepperoni");
pizzaBuilder.withTopping("Mushrooms");
pizzaBuilder.withTopping("Olives");
Pizza pizza = pizzaBuilder.build();
System.out.println(pizza);
}
}
在 main() 方法中,我们创建了一个 PizzaBuilder 对象,并使用它的方法来设置 Pizza 对象的属性。然后,我们调用 build() 方法来创建 Pizza 对象。最后,我们使用 System.out.println() 方法来打印 Pizza 对象的信息。
文章来源:https://blog.csdn.net/qq_36382892/article/details/135334005
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!