建造者模式
逐步构造一个复杂对象,同时隐藏构建细节,从而使得同样的构建过程可以创建不同的表示。
建造者模式通常包含以下几个角色
产品: 定义要构建的复杂对象。产品类通常具有多个属性,并且可能包含其他对象。
建造者: 接口或抽象类,规定了创建产品的步骤和方法。通过这些方法可以设置产品的不同部分。
具体建造者: 实现了建造者接口,负责实际构建产品的具体步骤。具体建造者类通常包含一个用于保存最终产品的成员变量,并提供方法来设置产品的各个部分。
指导者: 负责按照一定的构建步骤使用建造者来构建产品。指导者通常不直接构建产品,而是通过调用建造者的方法来间接构建产品。
代码示例
using System;
// 产品类
public class Product
{
public string Part1 { get; set; }
public string Part2 { get; set; }
public string Part3 { get; set; }
public void ShowInfo()
{
Console.WriteLine($"Part1: {Part1}, Part2: {Part2}, Part3: {Part3}");
}
}
// 建造者接口
public interface IBuilder
{
void BuildPart1();
void BuildPart2();
void BuildPart3();
Product GetResult();
}
// 具体建造者类
public class ConcreteBuilder : IBuilder
{
private Product product = new Product();
public void BuildPart1()
{
product.Part1 = "Part 1";
}
public void BuildPart2()
{
product.Part2 = "Part 2";
}
public void BuildPart3()
{
product.Part3 = "Part 3";
}
public Product GetResult()
{
return product;
}
}
// 指导者类
public class Director
{
private IBuilder builder;
public Director(IBuilder builder)
{
this.builder = builder;
}
public void Construct()
{
builder.BuildPart1();
builder.BuildPart2();
builder.BuildPart3();
}
}
class Program
{
static void Main()
{
// 创建建造者和指导者
IBuilder builder = new ConcreteBuilder();
Director director = new Director(builder);
// 构建产品
director.Construct();
// 获取产品
Product product = builder.GetResult();
// 显示产品信息
product.ShowInfo();
}
}