// Клиентский код создаёт объект-строитель, передаёт его директору, // а затем инициирует процесс построения. Конечный результат // извлекается из объекта-строителя. static void Main(string[] args) { var builder = new ConcreteBuilder(); var directorA = new DirectorA(builder); Console.WriteLine("Use DirectorA. Minimal product:"); directorA.BuildMinimalProduct(); var minProduct = builder.GetResult(); minProduct.Show(); Console.WriteLine("---"); Console.WriteLine("Use DirectorA. Full product:"); directorA.BuildFullProduct(); var fullProduct = builder.GetResult(); fullProduct.Show(); Console.WriteLine("---"); Console.WriteLine("Use DirectorB. Minimal product:"); var directorB = new DirectorB(); directorB.BuildMinimalProduct(builder); builder.GetResult().Show(); // Паттерн Строитель можно использовать без класса Директор. Console.WriteLine("---"); Console.WriteLine("Without Director. Custom product:"); builder.BuildPartA(); builder.BuildPartC(); builder.GetResult().Show(); }
void Main() { Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.Construct(); Product product = builder.GetResult(); }
public static void Main() { Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.Construct(); Product product = builder.GetResult(); product.Show(); }
static void Main() { var builder = new ConcreteBuilder(); var director = new Director(builder); director.Construct(); var product = builder.GetResult(); product.Show(); }
static void Main(string[] args) { Builder builder = new ConcreteBuilder(); Foreman foreman = new Foreman(builder); foreman.Construct(); House house = builder.GetResult(); Console.ReadKey(); }
static void Main(string[] args) { Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.Construct(); Product product = builder.GetResult(); product.Show(); }
static void Main(string[] args) { Director director = new Director(); BuilderAbstraction builder1 = new ConcreteBuilder(); director.Construct(builder1); Product product = builder1.GetResult(); product.Show(); }
public static void Main() { Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.Construct(); Product product = builder.GetResult(); product.Show(); Console.ReadLine(); }
public static void Main() { Builder builder = new ConcreteBuilder(); Foreman foreman = new Foreman(builder); foreman.Construct(); House house = builder.GetResult(); // Delay. Console.ReadKey(); }
static void Main(string[] args) { Builder.Abstract.Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.Construct(); Product product = builder.GetResult(); foreach (var part in product.parts) { Console.WriteLine(part); } Console.ReadKey(); }
static void Main(string[] args) { //house building Builder.Builder b = new ConcreteBuilder(); Foreman f = new Foreman(b); f.Construct(); House h = b.GetResult(); //bottle building BottleBuilder.BottleBuilder bb = new PepsiBottleBuilder(); Director d = new Director(bb); d.Construct(); Bottle bottle = bb.GetBottle(); }
static void Main(string[] args) { var woodBuilder = new WoodBuilder(); woodBuilder.BuildFloor(); woodBuilder.BuildWalls(); woodBuilder.BuildRoof(); woodBuilder.GetResult(); var concreteBuilder = new ConcreteBuilder(); concreteBuilder.BuildFloor(); concreteBuilder.BuildWalls(); concreteBuilder.BuildRoof(); concreteBuilder.GetResult(); }
/// <summary> /// 建造者模式:主要用于创建一个复杂的对象,这些对象的内部构建顺序一般是稳定的, /// 但是这些对象内部结构通常面临着复杂的变化(也就是说抽象建造者类里的抽闲方法的实现是复杂变化的) /// </summary> /// <param name="args"></param> static void Main(string[] args) { //先创建一个指挥者 Director director = new Director(); //在创建一个具体的建造者 ConcreteBuilder concreteBuilder = new ConcreteBuilder(); ConcreteBuilderIpad concreteBuilderiapIpad = new ConcreteBuilderIpad(); //指挥者开始指挥来 //指挥concreteBuilder开始构建产品 director.Construct(concreteBuilder); //指挥concreteBuilder得到产品 Product p1 = concreteBuilder.GetResult(); p1.Show(); //第二次指挥 director.Construct(concreteBuilderiapIpad); Product p2 = concreteBuilderiapIpad.GetResult(); p2.Show(); Console.ReadKey(); }