【GoF23种设计模式】01_建造者模式
文章目录
- 前言
- 一、基本概念
- 二、使用步骤
前言
提示:设计者模式有利于提高开发者的编程效率和代码质量:
GoF(Gang of Four,四人帮)设计模式由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者合著,介绍了23种经典的设计模式。
分为三大类:创建型模式、结构型模式和行为型模式。
提示:以下是本篇文章正文内容,下面案例可供参考
一、基本概念
建造者模式是一种创建型设计模式,它允许你一步一步构造对象,并且只有在所有必要的部分都准备好之后才返回最终的对象。
这种模式非常有用,特别是在构建复杂的对象时,可以避免大量的构造函数参数,同时也使得代码更加清晰易读。
二、使用步骤
下面是一个简单的例子,展示如何使用建造者模式来创建一个Meal对象,这个对象可能包含多种食物和饮料。
首先定义 Meal 类:
public class Meal {
private String mainCourse;
private String sideDish;
private String drink;
private String dessert;
// 私有构造器,防止直接实例化
private Meal(MealBuilder builder) {
this.mainCourse = builder.mainCourse;
this.sideDish = builder.sideDish;
this.drink = builder.drink;
this.dessert = builder.dessert;
}
@Override
public String toString() {
return "Meal{" +
"mainCourse='" + mainCourse + '\'' +
", sideDish='" + sideDish + '\'' +
", drink='" + drink + '\'' +
", dessert='" + dessert + '\'' +
'}';
}
// 内部静态类,作为建造者
public static class MealBuilder {
private String mainCourse;
private String sideDish;
private String drink;
private String dessert;
public MealBuilder mainCourse(String mainCourse) {
this.mainCourse = mainCourse;
return this;
}
public MealBuilder sideDish(String sideDish) {
this.sideDish = sideDish;
return this;
}
public MealBuilder drink(String drink) {
this.drink = drink;
return this;
}
public MealBuilder dessert(String dessert) {
this.dessert = dessert;
return this;
}
// 构建最终的 Meal 对象
public Meal build() {
return new Meal(this);
}
}
}
使用 MealBuilder 创建 Meal 对象:
public class Client {
public static void main(String[] args) {
// 使用建造者模式创建 Meal 对象
Meal meal = new Meal.MealBuilder()
.mainCourse("牛排")
.sideDish("薯条")
.drink("可乐")
.dessert("冰淇淋")
.build();
System.out.println(meal);
}
}
在这个例子中,Meal 类是最终要构建的对象,而 MealBuilder 是用来构建 Meal 实例的内部类。
通过调用 MealBuilder 的方法(如 mainCourse 和 sideDish),我们可以逐步设置 Meal 的各个属性。
最后,当我们调用 build() 方法时,就会创建一个新的 Meal 对象。
总结:
这种方式的好处在于,即使 Meal 类有很多属性,我们也不需要为每个组合都提供一个构造函数,而是可以根据需要逐步设置属性,这使得代码更加灵活和易于维护。