设计模式 ---建造者模式(Builder)

C# 建造者模式(Builder Pattern)详细讲解 建造者模式(Builder Pattern)是一种创建型设计模式,它通过将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。这个模式主要应用于那些构建过程复杂且涉及多个步骤的场景,特别适合于需要灵活配置且逐步构建的对象。Car在本例中,我们要构建的产品是一个复杂的Car类。该类有多个部件和属性,包括引擎类型、车轮数量、是否有 GPS、是否有天窗等。set;set;set;set;CarEngine(引擎类型),Wheels(车轮数),HasGPS(是否有 GPS), 阅读详情

建造者模式:将一个复杂对象的构建过程和表示过程分离。使得同样的构建过程可以创建不同的表示。

它主要是用于一些复杂的对象,这些对象的内部构建间的构造顺序通常是稳定的,但对象内部的构建同时面临着复杂的变化。建造者模式提供了一个通用的接口,接口中定义了产品创建的过程(提供产品的表示),而不同的Builder分别去实现创建过程,使得产品的表示和创建过程分离。Directory用于控制建造的过程/顺序,也用它来隔离用户和建造的过程。
这里写图片描述

C#代码示例:

C#代码示例:
namespace 建造者模式
{

     public class Product
     {
         public ArrayList Part = new ArrayList();
         public void AddProduct(string PartInfo)
         {
              Part.Add(PartInfo);
         }

         public void ShowProduct()
         {
              foreach (object part in Part)
              {
                   Console.WriteLine((string)part);
              }
         }
     }

     public abstract class absBuilder
     {
         public abstract void BuildMainBoard();
         public abstract void BuildMonitor();
         public abstract void BuildGraphCard();
         //And so on
         public abstract Product ReturnProduct();

     }
     public class Lenovo :absBuilder
     {
         private Product _product = new Product();
         //建造PC的实现细节。
         public override void BuildMainBoard()
         {
              _product.AddProduct("Lenovo PC MainBoard");
         }
         public override void BuildMonitor()
         {
              _product.AddProduct("Lenovo PC Monitor");
         }
         public override void BuildGraphCard()
         {
              _product.AddProduct("Lenovo PC GraphCard");

          }
         public override Product ReturnProduct()
         {
              return this._product;
         }
     }
     public class Purchase
     {   
         private absBuilder  PCFactory;
         public Purchase (absBuilder Factory)
         {
              this.PCFactory=Factory;
         }
         public void BuildPc()
         {
              //建造PC的表示过程。
              PCFactory.BuildMainBoard();
              PCFactory.BuildMainBoard();
              PCFactory.BuildGraphCard();
                            }
         public Product GetPc()
         {
              return (PCFactory.ReturnProduct());
         }
     }
     class Class1
     {
         /// <summary>
         /// 应用程序的主入口点。
         /// </summary>
         [STAThread]
         static void Main(string[] args)
         {
              Purchase PcPurchase = new Purchase(new Lenovo());
              PcPurchase.BuildPc();
              Product MyPc = PcPurchase.GetPc();
              MyPc.ShowProduct();

              Console.ReadLine();

         }
     }
}

Purchase 是Director类,负责控制建造过程。absBuilder是Builder类的通用接口负责定义建造中固定存在的流程. Lenovo是一个实际的Builder它实现了absBuilder建造过程。Purchase(Director类)只用关注产品的表示,而具体的建造细节不用关心有具体的Builder类(Lenovo)去实现。体现了面向对象中,分离关注点的思想,以及依赖倒置的原则。

C++设计模式——Builder Pattern建造者模式 建造者模式,又被称为生成器模式,是一种创建型设计模式,它将复杂产品的构建过程分解为一系列简单的步骤,每个步骤由独立的建造者对象负责。建造者模式常用于创建复杂的对象,它避免了直接传递大量参数来构造函数,使得构建过程变得可控,让代码变得灵活和可维护。建造者模式允许开发者按照指定的步骤创建复杂对象,构建过程的细节被封装在具体建造者中,将创建对象的过程和表示对象的过程分离,且同一个构建过程可以使用不同的具体建造者以及不同的顺序来创建不同的表示。 阅读详情

相关推荐

C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式)

C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式) 体验课程

【设计模式】建造者模式(C#)

C#实现建造者模式

baidu_33146219的博客 5870

用户行为数据分析 User Behavior Data from Taobao for Recommendation

一、提出问题 二、理解数据 数据来源 阿里云天池数据集:(https://tianchi.aliyun.com/dataset/dataDetail?dataId=649) 本文选取的数据集为UserBehavior.csv,共有5242880条数据。数据的具体类别如下表所示: 用户行为种类有四种,如下表所示 对于数据维度的说明如下: 在本文选取的2017年11月25日到2017年12月3日的时间范围内,不重复的用户数量为10202,不重复的商品ID数为412369,不重复的商品类目ID数为5859,

cccxxxqq的博客 5205

C# 设计模式5 建造者(Builder)

参考 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DesignPattern { public class BuilderPattern { //由于BuilderPattern隐藏了具体产品的组装过程,所以要改变一个产品的内部表示, //只需要再实现一

weixin_53370274的博客 257

STM32实战:电容触摸屏I2C转USB HID设备全解析

本文详细解析了基于STM32的电容触摸屏I2C转USB HID设备实现方案。通过硬件选型、协议分析和代码实现,展示了如何将GT911触摸屏数据转换为标准USB HID协议,并提供了关键调试经验与性能优化技巧,为智能家居控制面板等应用提供高性价比解决方案。

weixin_42548829的博客 320

Unity2019编译器下使用Ump无错误,打包exe不播放 或 将exe文件在其他电脑下运行不播放

一、unity编译器下使用UMP可以播放视频,打包后查看debug 出现错误 UnloadTime: 1.070900 ms Fallback handler could not load library F:/PCTest/AccessControlSysteam/jfmx_Data/Mono/libdl Fallback handler could not load library F:/PCTest/AccessControlSysteam/jfmx_Data/Mono/libdl.dll Fa.

qq_42345116的博客 4700

设计模式-创建型-建造者模式(Builder)

建造者模式属于创建型设计模式,当我们需要一个对象时,而这个对象又存在无比复杂的关系,导致这个对象巨大,那么我们可以通过建造者模式,将一个大对象拆分成多个小对象,分步骤进行创建。所以建造者模式经常用来创建复杂的合成对象,可以自定义配置步骤。封装性好,构建和表示分离扩展性好,建造类之间独立,在一定程度上进行了解耦。便于控制细节,建造者可以对创建过程逐步细化,而不对其他模块产生任何影响。

weixin_38535949的博客 484

SceneSplat

目标:训练一个网络,输入高斯参数 → 输出与自然语言空间对齐的特征。考虑到标注语义的 3DGS 数据有限,作者设计了。策略,让模型在无标签场景上学到有用表征。都有一个与自然语言对齐的语义特征。这是整个方法的第一步,目标是让。

weixin_61091146的博客 1284

C# 建造者模式

建造者模式(Builder Pattern)是一种对象构建的设计模式,它允许你逐步构建一个复杂的对象。建造者模式将对象的构建过程与其表示过程分离,使得同样的构建过程可以创建不同的表示。这有助于避免在创建复杂对象时出现大量的构造器参数,或者当对象的状态需要在多个步骤中设置时,能够提供更灵活的方式。一个典型的建造者模式使用场景是构建一个具有多个可选组件或配置的对象,例如构建一个汽车对象,汽车可以包含不同的引擎、轮胎、座椅等组件,每个组件都有多种选择。

語衣的个人博客 381

Python爬虫实战:基于异步爬虫与机器学习的数据采集——以电商平台在线评论有用性分析为例

内容涵盖爬虫原理、反爬虫策略应对、数据清洗、数据存储以及简单的数据分析预览,并为后续利用机器学习模型(如逻辑回归、随机森林)分析评论有用性打下坚实的数据基础。特别是在电子商务领域,在线评论作为UGC的一种主要形式,深刻影响着消费者的购买决策和商家的信誉体系。然而,平台上的评论质量参差不齐,充斥着大量无意义的灌水、广告甚至虚假评论。因此,如何自动识别和筛选出“有用”的评论,成为了学术界和工业界共同关注的焦点。我们选择目前Python爬虫领域最前沿、效率最高的技术组合,以确保爬虫的稳定性、速度和可扩展性。

2201_76125261的博客 106

Python爬虫实战:如何爬取汽车之家报价信息

本文通过实战介绍了如何使用Python编写爬虫,抓取汽车之家网站的车型、价格、配置等信息。在爬虫实现过程中,我们使用了requests库来发送HTTP请求,使用解析HTML页面,提取嵌入的JSON数据,并将数据存储到CSV文件中。同时,我们还介绍了如何使用反爬虫策略(如随机User-Agent、请求延时、代理池等)来规避反爬虫机制,确保爬虫的稳定性。

2201_76125261的博客 1594

Java 设计模式——建造者模式(Builder Pattern)

Java 设计模式——建造者模式(Builder Pattern) 一.简介 1.定义 将一个复杂对象的构建与它表示分离,使用同样的构建过程可以创建不同的表示 2.主要作用 在用户不知道对象建造过程和细节的情况下就可以直接创建复杂对象 3.如何使用 用户只需给出指定复杂对象的类型和内容,建造者模式负责按顺序创造对象(把内部建造过程和细节隐藏起来) 4.解决的问题 (1).方便用户创建复杂的对...

a158s168的博客 276

ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting `torch.set解决方案

本文主要介绍了ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting 'torch.set_default_device(device)` requires `accelerate`解决方案,希望能对使用transformers的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

设计模式:建造者模式(Builder Pattern)

建造者模式是一种创建型设计模式,它允许你分步骤创建复杂对象,使相同的构建过程可以创建不同的表示。;本质是 把"怎么装配"和"装成什么样"分离,让同样的装配流程可以生产不同"口味"的对象。

倔强老吕的博客 1687

图机器学习(1)——图论基础

图 (Graph) 是一种描述实体间关系的数学结构,几乎在各个领域都有应用。例如,社交网络就是图,其中用户之间的连接取决于一个用户是否“关注”另一个用户。图论,即对图的研究,一直以来广受关注,包含了大量算法、性质分析方法和数学模型,以解析复杂系统的行为特征。本节将介绍图数据结构的核心概念,通过理论阐述与实例演示相结合的方式,理解基础理论用以实践应用。重点介绍用于创建、操作和研究复杂网络结构与功能的 Python 库。

盼小辉丶的博客 9040

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

设计模式-03建造者模式Builder Pattern

建造者模式摘要:建造者模式是一种创建型设计模式,用于分步骤构建复杂对象,使构建过程与对象表示分离。该模式适用于需要创建包含多个组成部分的对象,特别是当这些部分可选或构建顺序可变时。通过UML类图展示了经典建造者模式和链式建造者模式的结构差异,并提供了Java实现示例。实现方式包括通过Builder内部类分步骤设置对象属性,最后通过build()方法返回完整对象,使代码更清晰且避免构造器参数过多的问题。

d3y1`5 81_09 1205

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java设计模式|建造者模式Builder Pattern

Java设计模式|建造者模式Builder Pattern 前言: 在日常生活中,我们可能会遇到这一类型的需求,例如一个实体类里有很多个属性,但是我们只想要其中的几种组合成一个新的对象,这个时候就可以使用建造者模式了,它提供了一种创建对象的最佳方式。建造者模式虽然比较好用,但是大家平时写代码的时候要谨记,不要滥用设计模式,不然的话可能会适得其反啊! 建造者模式 介绍:建造者模式又被称呼为生成器模式,这种类型的设计模式属于创建型模式,使用多个简单的对象一步一步构建成一个复杂的对象,将一个复杂对象的构建与它

QAQFyl的博客 547

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

23种设计模式之建造者模式(Builder Pattern)

本篇文章将23种设计模式中的建造者模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+

【编程素质】设计模式—建造者模式(Builder Design Pattern,生成器模式,Builder Pattern)

1,概念 封装一个产品的构造过程并允许按步骤构造(有多个步骤,工厂模式只有一个步骤,所以两者不同),并可以改变过程。 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2,场景 相同的方法,不同的执行顺序,产生不同的事件结果时; 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时; 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适; 3,类图 4,优缺点 1)优点 良好的封装性, 使用建造者模式可以使客户端不必知道产品内部

午后阳光 343

设计模式之建造者模式(Builder Pattern)

意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。何时使用:一些基本部件不会变,而其组合经常变化的时候。如何解决:将变与不变分离开。关键代码:建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系。

weixin_42294716的博客 1316

设计模式|建造者模式(Builder Pattern)

建造者模式(Builder Pattern)是一种创建型设计模式,用于将一个复杂对象的构建过程与其表示分离,以便可以使用相同的构建过程创建不同的表示。

weixin_44435110的博客 1440

【设计模式】Java 设计模式之建造者模式(Builder Pattern)

建造者模式是一种强大的设计模式,它通过抽象化对象的构建过程,提高了代码的可读性、可维护性和可扩展性。该模式适用于需要创建复杂对象且创建过程需要灵活调整的场景。通过定义建造者接口和指挥者类,我们可以将对象的构建逻辑与使用逻辑分离,使得代码更加清晰和易于维护。此外,建造者模式还支持创建多种表示的产品,增强了系统的灵活性。在实际应用中,我们可以根据需求选择合适的建造者模式变种和扩展应用方式,如带有默认值的建造者或链式调用的建造者。未来,随着软件系统的复杂度增加,建造者模式的应用将更加广泛,我们需关注其性能问题和设

新手村长的专栏 4595

秒懂设计模式之建造者模式(Builder pattern)

前言 人IT江湖飘,不懂设计模式咋装逼? 没实际写过5万行代码谈设计模式都是在瞎扯淡,咱先看看这定义 In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in softwar...

ShuSheng007的程序人生 6586

PHP设计模式之建造者模式(Builder Pattern)

一、什么是建造者模式 定义:建造者模式(Builder Pattern)又称生成器模式,是一种构建对象的模式。 1、它可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 2、由于建造零件的过程很复杂,因此,这些零件的建造过程往往被“外部化”到另一个乘坐建造者的对象里,建造者对象返还给客户端的是一个全部零件都建造完毕的产品对象。它将产品的结构和建造过程对客户端隐藏起来。 【释义】 使用生活中的例子来解释建造者...

Albert_____的博客 375

Design-pattern 创建型设计模式-Builder建造者模式

建造者模式|构建者模式|生成器模式 实际上,建造者模式的原理和代码实现非常简单,掌握起来并不难,难点在于应用场景。 比如,你有没有考虑过这样几个问题:直接使用构造函数或者配合 set 方法就能创建对象,为什么还需要建造者模式来创建呢? 建造者模式和工厂模式都可以创建对象,那它们两个的区别在哪里呢? 当创建一个对象是,构造函数参数很多,并且参数之间有逻辑关系。此时构造函数列表列表变的很长,代码在可读性和易用性上变差。在使用构造函数的时候,容易搞错各参数的顺序。传递进去错误的参数值,导致非常隐蔽的bug

lixld的专栏 271

【设计模式】建造者模式(Builder Pattern)详解

本文介绍了建造者模式在解决复杂对象创建问题中的应用。当构造函数参数过多导致可读性差、参数顺序易错时,建造者模式通过分步骤构建的方式提供解决方案。该模式包含产品类、抽象建造者、具体建造者和指挥者四个角色,核心思想是将对象的构建过程与表示分离。以计算机组装为例,演示了如何通过Builder类实现灵活的对象创建,并分析了该模式的优缺点:提升可读性、支持不可变对象,但会增加代码复杂度。最后指出建造者模式适用于属性多、构建步骤固定的场景,但不应滥用。文中还列举了JDK中StringBuilder等实际应用案例。

经天纬地,格物致理 997
上一篇: 设计模式---组合模式
下一篇: 笔记与心得:《人人都是产品经理 V2.0》--概念:提出与筛选
牛屁哄哄叫兽
博客等级 码龄18年 56粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值