設計模式--建造者模式

建造者模式用例圖

 

代碼

    class Program

    {

        static void Main(string[] args)

        {

            Director director = new Director();

            Builder b1 = new ConcreteBuilder1();

            Builder b2 = new ConcreteBuilder2();

 

            director.Construct(b1);

            Product p1 = b1.GetResult();

            p1.Show();

 

            director.Construct(b2);

            Product p2 = b2.GetResult();

            p2.Show();

 

            Console.Read();

        }

    }

 

    class Director

    {

        public void Construct(Builder builder)

        {

            builder.BuildPartA();

            builder.BuildPartB();

        }

    }

 

    abstract class Builder

    {

        public abstract void BuildPartA();

        public abstract void BuildPartB();

        public abstract Product GetResult();

    }

 

    class ConcreteBuilder1 : Builder

    {

        private Product product = new Product();

 

        public override void BuildPartA()

        {

            product.Add("部件A");

        }

 

        public override void BuildPartB()

        {

            product.Add("部件B");

        }

 

        public override Product GetResult()

        {

            return product;

        }

    }

 

    class ConcreteBuilder2 : Builder

    {

        private Product product = new Product();

        public override void BuildPartA()

        {

            product.Add("部件X");

        }

 

        public override void BuildPartB()

        {

            product.Add("部件Y");

        }

 

        public override Product GetResult()

        {

            return product;

        }

    }

 

    class Product

    {

        IList<string> parts = new List<string>();

 

        public void Add(string part)

        {

            parts.Add(part);

        }

 

        public void Show()

        {

            Console.WriteLine("\n产品 创建 ----");

            foreach (string part in parts)

            {

                Console.WriteLine(part);

            }

        }

    }

 

 

posted @ 2016-03-11 11:48  好好學習  阅读(175)  评论(0编辑  收藏  举报