建造模式

using System;
using System.Collections.Generic;

/**
 * 建造模式
 * http://www.cnblogs.com/zhili/p/BuilderPattern.html
 * ***/
namespace BuilderPatternDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("BuilderPatternDemo");
            Director d = new Director();
            Builder1 b1 = new Builder1();
            Builder2 b2 = new Builder2();
            d.Construct(b1);
            d.Construct(b2);
            Computer c1 = b1.GetComputer();
            Computer c2 = b2.GetComputer();
            c1.Show();
            c2.Show();
            Console.Read();
        }
    }

    class Computer
    {
        public List<string> parts = new List<string>();

        public void Add(string part)
        {
            this.parts.Add(part);
        }

        public void Show()
        {
            foreach (var inst in this.parts)
            {
                Console.WriteLine(inst + "已经组装好");
            }
            Console.WriteLine("电脑已经组装好了");
        }
    }

    abstract class Builder
    {
        protected Computer computer = new Computer();
        public abstract void BuildCPU();

        public abstract void BuildMemory();

        public abstract Computer GetComputer();
    }


    class Builder1 : Builder
    {
        public override void BuildCPU()
        {
            this.computer.Add("CPU1");
        }

        public override void BuildMemory()
        {
            this.computer.Add("内存1");
        }

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

    class Builder2 : Builder
    {
        public override void BuildCPU()
        {
            this.computer.Add("CPU2");
        }

        public override void BuildMemory()
        {
            this.computer.Add("内存2");
        }

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

    class Director
    {
        public void Construct(Builder b)
        {
            b.BuildCPU();
            b.BuildMemory();
        }
    }
}

 

posted @ 2013-12-20 09:08  WBFF  阅读(310)  评论(0)    收藏  举报