zoukankan      html  css  js  c++  java
  • 设计模式培训之八:建造者模式

    摘要: 查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html

    一、定义

    将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。

    PIC041

    二、应用场景

    当一个产品需要复杂的构造,但是构造过程是稳定的,只是构造的对象有不同表示时,就可以使用建造模式。

    三、代码实现

    class Product
        {
            IList<string> parts=new List<string>(); 
            public void Add(string part)
            {
                parts.Add(part);
            }
            public void show()
            {
                Console.WriteLine("\n产品 创建----");
                foreach (string part in parts)
                {
                    Console.WriteLine(part);
                }
            }
    
        }
    
        internal abstract class Bulider
        {
            public abstract void BulidPartA();
            public abstract void BulidPartB();
            public abstract Product GetResult();
        }
    
        class ConcreteBuilder1:Bulider
        {
             private Product product =new Product();
    
             public override void BulidPartA()
             {
                 product.Add("部件A");
             }
             public override void BulidPartB()
             {
                 product.Add("部件B");
             }
    
             public override Product GetResult()
             {
                 return product;
             }
        }
    
        class ConcreteBuilder2 : Bulider
        {
            private Product product = new Product();
    
            public override void BulidPartA()
            {
                product.Add("部件X");
            }
            public override void BulidPartB()
            {
                product.Add("部件Y");
            }
    
            public override Product GetResult()
            {
                return product;
            }
        }
    
        class Director
        {
             public void Construct(Bulider bulider)
             {
                 bulider.BulidPartA();
                 bulider.BulidPartB();
             }
        }

    客户端调用:

    Director director = new Director();
                Bulider b1 = new ConcreteBuilder1();
                Bulider b2 = new ConcreteBuilder2();
                director.Construct(b1);
                Product p1 = b1.GetResult();
                p1.show();
    
                director.Construct(b2);
                Product p2 = b2.GetResult();
                p2.show();
    
                Console.Read();
  • 相关阅读:
    基本输入输出函数
    变长参数表函数的编写
    一文精通Linux 命令行
    Linux 下的种种打包、压缩、解压命令
    GIT补丁怎么打?
    GIT 合并的冲突解决途径
    GIT 库整理方法
    GIT中常用命令详解1.reset
    霍夫曼编码及译码
    C语言链表实现队列
  • 原文地址:https://www.cnblogs.com/seesea125/p/2530950.html
Copyright © 2011-2022 走看看