buildertheory.cs

  using System;
  using System.Collections.Generic;

  // Builder Pattern               judith Bishop November 2007
  // Simple theory code with one director and two builders

  class Director {
    // Builder uses a complex series of steps
    public void Construct(IBuilder builder) {
      builder.BuildPartA();
      builder.BuildPartB();
      builder.BuildPartB();
    }
  }

  interface IBuilder {
    void BuildPartA();
    void BuildPartB();
    Product GetResult();
  }

  class Builder1 : IBuilder {
    private Product product = new Product();
    public  void BuildPartA() {
      product.Add("PartA ");
    }

    public void BuildPartB() {
      product.Add("PartB ");
    }

    public Product GetResult() {
      return product;
    }
  }

  class Builder2 : IBuilder {
    private Product product = new Product();
    public void BuildPartA() {
      product.Add("PartX ");
    }

    public void BuildPartB() {
      product.Add("PartY ");
    }

    public Product GetResult() {
      return product;
    }
  }

  class Product {
    List <string> parts = new List <string> ();
    public void Add(string part) {
      parts.Add(part);
    }

    public void Display() {
      Console.WriteLine("\nProduct Parts -------");
      foreach (string part in parts)
        Console.Write(part);
      Console.WriteLine();
    }
  }
 
  public class Client {
       
    public static void Main() {
      // Create one director and two builders
      Director director = new Director();

      IBuilder b1 = new Builder1();
      IBuilder b2 = new Builder2();

      // Construct two products
      director.Construct(b1);
      Product p1 = b1.GetResult();
      p1.Display();

      director.Construct(b2);
      Product p2 = b2.GetResult();
      p2.Display();
    }
  }
/* Output
Product Parts -------
PartA PartB PartB

Product Parts -------
PartX PartY PartY
*/
原文地址:https://www.cnblogs.com/shihao/p/2506761.html