• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

   建造者模式概述:

      建造则(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类按照次序构建所需的组件。

相关模式

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

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[经验]Java使用netty框架,向Unity客户端的C#实现通信[1]发布时间:2022-07-14
下一篇:
C#登陆电脑QQ发送消息发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap