不得不懂的C#设计模式学习(一)

本文详细解读了设计模式中的建造者模式,通过实例代码演示了如何利用该模式构建复杂对象,强调了解耦组装过程的重要性。文章还对比了建造者模式与抽象工厂、复合模式的关系,为读者提供了深入的思考与实践指导。

       每天有两个小时要在地铁上度过,打发枯燥的坐车时间唯有看书。最近在看经典大作大话设计模式,其中的编程思想带给我很大的震撼。

每天学习一个设计模式(建造者模式)

   建造者模式概述:

      建造则(Builder Pattern)也叫做生成器模式,提供一种“封装机制”来隔离出"复杂对象的各个部分"的变化,从而保持"稳健构建算法"不随着需求改变而改变。

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

  在建造者模式中,有如下四个角色:

     Product产品类:

通常是实现了模板方法模式,也就是有模板方法和基本方法。

     Builder抽象建造者:

规范产品的组建,一般是由子类实现。

     ConcreteBuilder具体建造者

实现抽象类定义的所有方法,并返回一个组件好的对象。

     Director导演

负责安排已有模块的顺序,然后告诉Builder开始创建。

代码清单:   

public class Product
    {
        IList<string> parts = new List<string>();
        public void Add(string str)
        {
            parts.Add(str);
        }

        public void Show()
        {
            Console.WriteLine("\n产品创建-----");
            foreach (string item in parts)
            {
                Console.WriteLine(item);
            }
        }
    }

    public abstract class Builder
    {
        public abstract void BuilderPartA();
        public abstract void BuilderPartB();
        public abstract Product GetResult();
    }

    class ConcreteBuilder1 : Builder
    {
        private Product product = new Product();

        public override void BuilderPartA()
        {
            product.Add("部件A");
        }

        public override void BuilderPartB()
        {
            product.Add("部件B");
        }

        public override Product GetResult()
        {
            return product;
        }
    }


    public class ConcerteBulider2 : Builder
    {
        private Product product = new Product();

        public override void BuilderPartA()
        {
            product.Add("部件X");
        }

        public override void BuilderPartB()
        {
            product.Add("部件Y");
        }

        public override Product GetResult()
        {
            return product;
        }
    }

    public class Director
    {
        public void Construct(Builder builder)
        {
            builder.BuilderPartA();
            builder.BuilderPartB();
        }
    }
 static void Main(string[] args)
        {
            Director director = new Director();
            Builder b1 = new ConcreteBuilder1();
            Builder b2 = new ConcerteBulider2();
            director.Construct(b1);
            Product p1 = b1.GetResult();
            p1.Show();
            director.Construct(b2);
            Product p2 = b2.GetResult();
            p2.Show();
        }

 总结:建造者模式的实质是解耦组装过程和创建具体部件,使得我们不关心每个部件是如何组装的。

          建造者模式的奥妙在于Builder将构建次序交给Director类按照次序构建所需的组件。

相关模式

          抽象工厂:重点是工厂模式(简单或者复杂工厂),而建造者模式重点是由简单模式构建复杂对象。

          复合模式:经常被用来构建复杂模式。

 

转载于:https://www.cnblogs.com/mondLei/archive/2013/04/09/3009333.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值