• 建造者模式


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

    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);
                }
            }
        }
    
    
    }
    

      

  • 相关阅读:
    python爬虫实战(八)--------知乎
    python爬虫实战(七)--------伯乐在线文章(模版)
    python分布式爬虫打造搜索引擎--------scrapy实现
    VS2010与SVN
    ASP.net 自定义控件GridView
    Asp.net Ajax提供PageMethods调用
    JSON串行化
    JOSN反串行化
    WebRequestManager对象的使用
    WebRequest调用
  • 原文地址:https://www.cnblogs.com/happygx/p/8393261.html
Copyright © 2020-2023  润新知