Builder Design Pattern in C#
This is a C# implementation of the Builder design pattern, based on the Gang of Four's structure. Each class is placed in a separate file, and all code lines are commented.
🔧 Product.cs
public class Product
{
private List<string> _parts = new List<string>(); // List to store product parts
public void Add(string part)
{
_parts.Add(part);
}
public void Show()
{
Console.WriteLine("Product Parts:");
foreach (string part in _parts)
{
Console.WriteLine("- " + part);
}
}
}
🔧 Builder.cs
public abstract class Builder
{
public abstract void BuildPartA(); // Step to build Part A
public abstract void BuildPartB(); // Step to build Part B
public abstract Product GetResult(); // Returns the final product
}
🔧 ConcreteBuilder.cs
public class ConcreteBuilder : Builder
{
private Product _product = new Product(); // The product instance being built
public override void BuildPartA()
{
_product.Add("PartA"); // Adds PartA to the product
}
public override void BuildPartB()
{
_product.Add("PartB"); // Adds PartB to the product
}
public override Product GetResult()
{
return _product; // Returns the fully built product
}
}
🔧 Director.cs
public class Director
{
public void Construct(Builder builder)
{
builder.BuildPartA(); // Instruct builder to build Part A
builder.BuildPartB(); // Instruct builder to build Part B
}
}
🔧 Program.cs
class Program
{
static void Main(string[] args)
{
Director director = new Director(); // Initializes the director
Builder builder = new ConcreteBuilder(); // Initializes a concrete builder
director.Construct(builder); // Directs the builder to build the product
Product product = builder.GetResult(); // Retrieves the final product
product.Show(); // Displays the product parts
}
}
💡 Console Output
Product Parts: - PartA - PartB
No comments:
Post a Comment