定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
using System; using System.Collections; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { class Program { public class Product { private string name; public string Name { get { return name; } set { name = value; } } public override string ToString() { return string.Format("Name: {0}", name); } } public abstract class Builder { public abstract void SetName(string name); public abstract Product GetProduct(); } public class ConcreateBuilder : Builder { private Product product = new Product(); public override void SetName(string name) { product.Name = name; } public override Product GetProduct() { return product; } } public class Director { private Builder builder = new ConcreateBuilder(); public Product GetAProduct() { builder.SetName("a"); return builder.GetProduct(); } public Product GetBProduct() { builder.SetName("b"); return builder.GetProduct(); } } static void Main(string[] args) { Director director = new Director(); Product a = director.GetAProduct(); Product b = director.GetBProduct(); Console.WriteLine(a.ToString()); Console.WriteLine(b.ToString()); } } }