public string Name { get; set; }
public string Category { get; set; }
public decimal Price { get; set; }
public int Stock { get; set; }
public override string ToString()
return "Product: " + Name + ", Category: " + Category + ", Price: " + Price.ToString("C") + ", Stock: " + Stock;
public interface IProductBuilder
void SetName(string name);
void SetCategory(string category);
void SetPrice(decimal price);
void SetStock(int stock);
public class ConcreteProductBuilder : IProductBuilder
private Product _product = new Product();
public void SetName(string name)
public void SetCategory(string category)
_product.Category = category;
public void SetPrice(decimal price)
public void SetStock(int stock)
public Product GetProduct()
public class ProductCreator
private IProductBuilder _builder;
public ProductCreator(IProductBuilder builder)
public void CreateProduct(string name, string category, decimal price, int stock)
_builder.SetCategory(category);
_builder.SetPrice(price);
_builder.SetStock(stock);
public Product GetProduct()
return _builder.GetProduct();
public static void Main(string[] args)
IProductBuilder builder = new ConcreteProductBuilder();
ProductCreator creator = new ProductCreator(builder);
creator.CreateProduct("Laptop", "Electronics", 1200.00m, 10);
Product product = creator.GetProduct();
Console.WriteLine(product);
Console.WriteLine("Error: " + ex.Message);