设计模式培训之八:建造者模式

摘要: 查看本人文章索引请通过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();
复制代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值