zoukankan      html  css  js  c++  java
  • 建造者模式

    建造者模式:可以将一个产品的内部表现与产品的生成过程分割开来。从而可以使一个建造过程具有不同的内部表现的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了

    namespace 建造者模式
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建指挥者
                Director director = new Director();
                //创建部件AB类
                Builder b1 = new ConcreteBuilder1();
                //创建部件XY类
                Builder b2 = new ConcreteBuilder2();
                //增加AB部件
                director.Construct(b1);
                Product p1 = b1.GetResult();
                //进行展示
                p1.Show();
                //增加XY部件
                director.Construct(b2);
                Product p2 = b2.GetResult();
                //进行展示
                p2.Show();
    
                Console.Read();
            }
        }
        /// <summary>
        /// 指挥者 
        /// </summary>
        class Director
        {
            /// <summary>
            /// 用来指挥建造过程   
            /// </summary>
            /// <param name="builder"></param>
            public void Construct(Builder builder)
            {
                //建造AB部件
                builder.BuildPartA();
                //建造XY部件
                builder.BuildPartB();
            }
        }
        /// <summary>
        /// 抽象建造者
        /// </summary>
        abstract class Builder
        {
            public abstract void BuildPartA();
            public abstract void BuildPartB();
            public abstract Product GetResult();
        }
        /// <summary>
        /// 具体建造类1
        /// </summary>
        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;
            }
        }
        /// <summary>
        /// 具体建造类2
        /// </summary>
        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;
            }
        }
        /// <summary>
        /// 产品类
        /// </summary>
        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);
                }
            }
        }
    
    
    }
    

      

  • 相关阅读:
    BEC listen and translation exercise 44
    中译英12
    BEC listen and translation exercise 43
    中译英11
    BEC listen and translation exercise 42
    中译英10
    BEC listen and translation exercise 41
    中译英9
    BEC listen and translation exercise 40
    中译英8
  • 原文地址:https://www.cnblogs.com/happygx/p/8393261.html
Copyright © 2011-2022 走看看