• 主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。
  • 建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。
  • 建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时使用的模式。
    class Product //具体产品
    {
        IList<string> parts = new List<string>();
        public void Add(string part)
        {
            parts.Add(part);
        }
        public void Show()
        {
            Console.WriteLine(“产品创建…”);
            foreach (string part in parts)
            {
                Console.WriteLine(part);
            }
        }
    }
    abstract class Builder //建造抽象方法
    {
        public abstract void BuildPartA();
        public abstract void BuildPartB();
        public abstract Product GetResult();
    }
    class PlayerA : Builder //商品
    {
        public 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 Director //指挥者
    {
        public void Construct(Builder builder)
        {
            builder.BuildPartA();
            builder.BuildPartB();
        }
    }
    static void Main(string[] args)
    {
        Director director = new Director(); //指挥着
        Builder b1 = new PlayerA(); //指挥者说要建造一个PlayerA类型的玩具
        director.Construct(b1); //指挥者确认构建
        Product p1 = b1.GetResult(); //建造出玩具
        p1.Show(); //展示玩具
        Console.ReadKey();
    }