现在的位置: 首页 > 综合 > 正文

C# 设计模式之 建造者模式

2014年10月18日 ⁄ 综合 ⁄ 共 1648字 ⁄ 字号 评论关闭

把建造逻辑和建造顺序  分离

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace DesignPytternDemo
{


    public interface IBuilder
    {
         void ShowTop();
         void ShowMiddle();
         void ShowBottom();
    }


    /// <summary>
    /// 打印出*
    /// </summary>
    public class StarBuilder : IBuilder
    {
        public void ShowTop()
        {
            Console.WriteLine("*");
        }


        public void ShowMiddle()
        {
            Console.WriteLine("**");
        }


        public void ShowBottom()
        {
            Console.WriteLine("***");
        }
    }


    /// <summary>
    /// 打印出+
    /// </summary>
    public class AddBuilder : IBuilder
    {
        public void ShowTop()
        {
            Console.WriteLine("+");
        }


        public void ShowMiddle()
        {
            Console.WriteLine("++");
        }


        public void ShowBottom()
        {
            Console.WriteLine("+++");
        }
    }


    /// <summary>
    /// 打印出-
    /// </summary>
    public class SubBuilder : IBuilder
    {
        public void ShowTop()
        {
            Console.WriteLine("-");
        }


        public void ShowMiddle()
        {
            Console.WriteLine("--");
        }


        public void ShowBottom()
        {
            Console.WriteLine("---");
        }
    }


    public class TopDirector
    {
        private IBuilder builder;
        public TopDirector(IBuilder builder)
        {
            this.builder = builder;
        }
        public void Show()
        {
            this.builder.ShowTop();
            this.builder.ShowMiddle();
            this.builder.ShowBottom();
        }
    }


    public class MiddleDirector
    {
        private IBuilder builder;
        public MiddleDirector(IBuilder builder)
        {
            this.builder = builder;
        }
        public void Show()
        {
            this.builder.ShowMiddle();
            this.builder.ShowTop();
            this.builder.ShowBottom();
        }
    }


    public class BottomDirector
    {
        private IBuilder builder;
        public BottomDirector(IBuilder builder)
        {
            this.builder = builder;
        }
        public void Show()
        {
            this.builder.ShowBottom();
            this.builder.ShowTop();
            this.builder.ShowMiddle();
        }
    }


}

  IBuilder builder = new StarBuilder();
            TopDirector td = new TopDirector(builder);
            td.Show();


            builder = new AddBuilder();
            MiddleDirector md = new MiddleDirector(builder);
            md.Show();
            
            builder = new SubBuilder();
            BottomDirector bd = new BottomDirector(builder);
            bd.Show();

抱歉!评论已关闭.