C#编程模式之建造者模式

这篇具有很好参考价值的文章主要介绍了C#编程模式之建造者模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        模式介绍:各位伙伴,我们继续对编程模式进行深入浅出的探讨,本文主要介绍的模式是建造者模式。相对与工厂模式关注单一性质的产品而言,建造者模式更关注的是复杂产品的创建,尤其是产品各个部分的创建过程。建造者模式会根据各部分的不同来创建不同的产品。

        适用性介绍:工厂模式适用于创建单一性质的产品;建造者模式适用于创建复杂、由多个部分组成的对象。

        下面我们根据具体的例子来进行深入的理解。

        1、创建产品类。

    /// <summary>
    /// 被创建的产品类
    /// </summary>
    public class Product
    {
        /// <summary>
        /// 产品属性或说明的集合
        /// </summary>
        private List<string> listAttribute = new List<string>();

        /// <summary>
        /// 添加属性
        /// </summary>
        /// <param name="strAttribute">添加的属性值</param>
        public void AddAttribute(string strAttribute)
        {
            listAttribute.Add(strAttribute);
        }

        /// <summary>
        /// 显示所有属性
        /// </summary>
        /// <returns></returns>
        public string ShowAllAttribute()
        {
            string strResult = "我的属性值如下:";
            foreach (string strAttribute in listAttribute)
            {
                strResult += strAttribute + ",";
            }
            return strResult.TrimEnd(',');
        }
    }

        2、创建建造者基类。此类中定义包含赋值给产品所有属性的抽象方法,以及获取产品的抽象方法。

    /// <summary>
    /// 建造者基类
    /// </summary>
    public abstract class CBuilder
    {
        /// <summary>
        /// 建造属性1
        /// </summary>
        /// <returns></returns>
        public abstract void BuilderAttributeOne();
        /// <summary>
        /// 建造属性2
        /// </summary>
        /// <returns></returns>
        public abstract void BuilderAttributeTwo();
        /// <summary>
        /// 建造属性3
        /// </summary>
        /// <returns></returns>
        public abstract void BuilderAttributeThree();

        /// <summary>
        /// 建造产品
        /// </summary>
        /// <returns></returns>
        public abstract Product GetProduct();
    }

        3、创建具体的建造者类。建造者类用来实现基类,并定义具体的赋值和获取的过程。

    /// <summary>
    /// 具体的建造者A
    /// </summary>
    public class CSpecificBuilderA : CBuilder
    {
        private Product product = new Product();
        public override void BuilderAttributeOne()
        {
            product.AddAttribute("我是产品A");
        }

        public override void BuilderAttributeThree()
        {
            product.AddAttribute("生产我需要10分钟");
        }

        public override void BuilderAttributeTwo()
        {
            product.AddAttribute("每天生产我12个小时");
        }

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

    /// <summary>
    /// 具体的建造者B
    /// </summary>
    public class CSpecificBuilderB : CBuilder
    {
        private Product product = new Product();
        public override void BuilderAttributeOne()
        {
            product.AddAttribute("我是产品B");
        }

        public override void BuilderAttributeThree()
        {
            product.AddAttribute("生产我需要15分钟");
        }

        public override void BuilderAttributeTwo()
        {
            product.AddAttribute("每天生产我18个小时");
        }

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

        4、创建指挥者类。此类用来决定如何创建产品,不同的创建方法会产生不同的产品。

    /// <summary>
    /// 指挥者
    /// </summary>
    public class CDirector
    {
        /// <summary>
        /// 指挥创建产品的属性,此处可以随意增加或者修改是否添加相关属性
        /// </summary>
        /// <param name="builder"></param>
        public void ConstructMethodOne(CBuilder builder)
        {
            builder.BuilderAttributeOne();
            builder.BuilderAttributeTwo();
            builder.BuilderAttributeThree();
        }

        /// <summary>
        /// 指挥创建产品的属性,此处可以随意增加或者修改是否添加相关属性
        /// </summary>
        /// <param name="builder"></param>
        public void ConstructMethodTwo(CBuilder builder)
        {
            builder.BuilderAttributeOne();
            builder.BuilderAttributeThree();
        }
    }

        5、客户端调用。

    /// <summary>
    /// 建造者测试
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void btn_builder_Click(object sender, EventArgs e)
    {
        //创建一个指挥者
        CDirector director = new CDirector();
        //创建一个建造者基类
        CBuilder builder;
        //创建一个产品实例
        Product product;
        //建造者基类赋值为建造者A
        builder = new CSpecificBuilderA();
        //指挥创建builder的属性
        director.ConstructMethodOne(builder);
        //建造产品
        product = builder.GetProduct();

        tbox_builder.Text = product.ShowAllAttribute();

        //建造者基类赋值为建造者B
        builder = new CSpecificBuilderB();
        director.ConstructMethodTwo(builder);
        product = builder.GetProduct();

        tbox_builder.Text += "\r\n" + product.ShowAllAttribute();
    }

        至此,建造者模式的例程就基本完成,希望能给各位朋友带来一定的启发,也欢迎各位朋友批评指正。 文章来源地址https://www.toymoban.com/news/detail-858223.html

到了这里,关于C#编程模式之建造者模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# Windows 窗体编程入门详解

    C# Windows 窗体编程入门详解 基于Web的B/S架构应用程序近年来确实非常流行,B/S易于部署、易于维护的特点使Web应用程序开发得到了前所未有的发展。但是,Web应用程序的缺点是,它们有时不能提供丰富的用户体验以及对本机系统环境的控制和利用,例如刷新问题和长时间运行

    2024年02月11日
    浏览(47)
  • 建造者模式深入理解:演示建造单个和多个产品的实践,结合模板模式,通俗易懂

    首先呢看下建造者的定义是什么样的,先读一遍 建造者模式 (Builder Pattern)是一种创建型设计模式,它主要用于将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表现形式。这种模式通过一系列可重用的独立的类(称为建造者或构建器)来一

    2024年01月22日
    浏览(40)
  • 【设计模式】建造者模式

    建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 意图: 将一个复杂的构建与其表示相分

    2024年02月13日
    浏览(43)
  • 设计模式: 建造者模式

    建造模式通过一步一步的去构建一个复杂的对象。该模式将对象的构建细节封装在一个独立的建造者类中,使得客户端代码可以根据需要定制对象的构建过程,而不必知道具体的构建细节。 建造者模式通常包括以下几个角色: 产品类(Product):需要对象,通常是包含多个属

    2024年02月21日
    浏览(38)
  • 设计模式——建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它允许通过分步骤来构建复杂对象。该模式的核心原理是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现形式。 在建造者模式中,通常有以下角色: 抽象建造者(Builder): 定义了创建产品

    2024年01月16日
    浏览(44)
  • 创建型模式 - 建造者模式

    将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。 由于实现了构建和装配的解耦。不同的构建器,相同的

    2024年02月16日
    浏览(25)
  • 设计模式-建造者模式

    在前面几篇文章中,已经讲解了单例模式、工厂方法模式、抽象工厂模式,创建型还剩下一个比较重要的模式-建造者模式。在理解该模式之前,我还是希望重申设计模式的初衷,即 为解决一些问题而提供的优良方案 。学习设计模式遗忘其初衷,注定无法理解其真正的深刻内

    2024年02月15日
    浏览(43)
  • 创建型模式 | 建造者模式

    建造者模式 又叫生成器模式,是一种对象的构建模式。它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。创建者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,

    2024年01月22日
    浏览(33)
  • 创建型模式-建造者模式

    使用多个简单的对象一步一步构建成一个复杂的对象 主要解决: 主要解决在软件系统中,有时候面临着\\\"一个复杂对象\\\"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算

    2024年02月11日
    浏览(33)
  • 设计模式(9)建造者模式

    一、介绍 1、概念:将一个复杂对象的构造与它的表示分离,使得同样的构造过程可以创建不同的表示。建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化;建造者模式的好处就是使得建造代码与表

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包