public static void BuilderStructural() { // Create director and builders var director = new Director(); Log.WriteLine("{0} has Created", director.GetType().Name); Builder b1 = new ConcreteBuilder1(); Builder b2 = new ConcreteBuilder2(); Log.WriteLine("{0} has Created", b1.GetType().Name); Log.WriteLine("{0} has Created", b2.GetType().Name); Log.AddSeparator(5); // Construct two products director.Construct(b1); Log.WriteLine("{0} has Construct {1}", director.GetType().Name, b1.GetType().Name); Product p1 = b1.GetResult(); Log.WriteLine("Get Resuult"); p1.Show(); Log.AddSeparator(5); director.Construct(b2); Log.WriteLine("{0} has Construct {1}", director.GetType().Name, b2.GetType().Name); Product p2 = b2.GetResult(); Log.WriteLine("Get Resuult"); p2.Show(); // Wait for user }