using System.Collections.Generic;
public static void Main()
Console.WriteLine("Start Builder Design Pattern.");
VehicleBuilder vehicleBuilder;
vehicleBuilder = new MotorCycleBuilder();
shop.Construct(vehicleBuilder);
vehicleBuilder.Vehicle.Show();
public void Construct(VehicleBuilder b)
abstract class VehicleBuilder
protected Vehicle vehicle;
public abstract void BuildEngine();
public abstract void BuildTransmission();
public abstract void BuildWheels();
public abstract void BuildBody();
private string _vehicleType;
private Dictionary<string, string> _parts = new Dictionary<string, string>();
public Vehicle(string vehicleType)
this._vehicleType = vehicleType;
public string this[string key]
get { return _parts[key]; }
set { _parts[key] = value; }
Console.WriteLine("\n---------------------------");
Console.WriteLine("Vehicle Type: {0}", _vehicleType);
Console.WriteLine(" Transmission : {0}", _parts["transmission"]);
Console.WriteLine(" Engine : {0}", _parts["engine"]);
Console.WriteLine(" #Wheels: {0}", _parts["wheels"]);
Console.WriteLine(" #Body : {0}", _parts["body"]);
class MotorCycleBuilder : VehicleBuilder
public MotorCycleBuilder()
vehicle = new Vehicle("MotorCycle");
public override void BuildEngine()
vehicle["engine"] = "220cc DTS-I";
public override void BuildTransmission()
vehicle["transmission"] = "Automatic";
public override void BuildBody()
vehicle["body"] = "Swingarm";
public override void BuildWheels()
vehicle["wheels"] = "5 Spoke Spiderweb Allow";