23种设计模式--建造者模式-Builder Pattern

一、建造模式的介绍

      建造者模式就是将零件组装成一个整体,用官方一点的话来讲就是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。生活中比如说组装电脑,汽车等等这些都是建造者模式的具体体现,组装电脑反应到软件上就是一个复杂的对象,然后我们使用建造者模式的时候需要抽象一个建造类,抽象一个指挥者指挥具体实现的那个类,然后就是具体实现这个对象的类,这样就避免了每新创建一个不同的复杂对象就需要重新写一下这个类,这样就只要重写建造者就可以了,我们接下来就用组装电脑这个来说明一下建造这个模式。

二、建造模式的介绍

/// <summary>
    /// 抽象建造者
    /// </summary>
    public abstract  class Builder
    {
        //安装CPU
        public abstract void BuildPartCPU();
        //安装主板
        public abstract void BuilePartMainBoard();

        //获得组装好的电脑
        public abstract Computer GetComputer();
    }

   /// <summary>
    /// 电脑类
    /// </summary>
    public class Computer
    {
        /// <summary>
        /// 电脑组合集合
        /// </summary>
        private List<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+"已组装好");
            }
            Console.WriteLine("电脑组装好了");
        }
    }

/// <summary>
    /// 具体的组装电脑的人
    /// </summary>
    public class ConcreteBuilder1 : Builder
    {
        Computer computer = new Computer();
        public override void BuildPartCPU()
        {
            computer.Add("CPU");
        }

        public override void BuilePartMainBoard()
        {
            computer.Add("Main board");
        }

        public override Computer GetComputer()
        {
            return computer;
        }
    }

/// <summary>
        /// 指挥者
        /// </summary>
        /// <param name="builder"></param>
        public void Construct(Builder builder)
        {
            builder.BuildPartCPU();
            builder.BuilePartMainBoard();
        }

/// <summary>
        /// 调用
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            Director director = new Director();
            Builder b1 = new ConcreteBuilder1();

            director.Construct(b1);

            Computer computer = b1.GetComputer();
            computer.Show();

            Console.ReadKey();
        }

三、GitHub

https://github.com/wangtongzhou520/Designpattern

上一篇:第四篇 :微信公众平台开发实战Java版之完成消息接受与相应以及消息的处理


下一篇:Oracle 常见函数