Exemple #1
0
        // Клиентский код создаёт объект-строитель, передаёт его директору,
        // а затем инициирует  процесс построения. Конечный результат
        // извлекается из объекта-строителя.
        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();
        }
Exemple #2
0
        void Main()
        {
            Builder  builder  = new ConcreteBuilder();
            Director director = new Director(builder);

            director.Construct();
            Product product = builder.GetResult();
        }
Exemple #3
0
        public static void Main()
        {
            Builder builder = new ConcreteBuilder();
            Director director = new Director(builder);
            director.Construct();

            Product product = builder.GetResult();
            product.Show();
        }
Exemple #4
0
        static void Main()
        {
            var builder  = new ConcreteBuilder();
            var director = new Director(builder);

            director.Construct();

            var product = builder.GetResult();

            product.Show();
        }
Exemple #5
0
        static void Main(string[] args)
        {
            Builder builder = new ConcreteBuilder();
            Foreman foreman = new Foreman(builder);

            foreman.Construct();

            House house = builder.GetResult();

            Console.ReadKey();
        }
Exemple #6
0
        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();
        }
Exemple #8
0
        public static void Main()
        {
            Builder  builder  = new ConcreteBuilder();
            Director director = new Director(builder);

            director.Construct();
            Product product = builder.GetResult();

            product.Show();

            Console.ReadLine();
        }
Exemple #9
0
        public static void Main()
        {
            Builder builder = new ConcreteBuilder();
            Foreman foreman = new Foreman(builder);

            foreman.Construct();

            House house = builder.GetResult();

            // Delay.
            Console.ReadKey();
        }
Exemple #10
0
        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();
        }
Exemple #11
0
        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();
        }
Exemple #12
0
        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();
        }
Exemple #13
0
        /// <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();
        }