右面是某网站建设立项需求山西笑傲网站建设

web/2025/10/1 1:55:55/文章来源:
右面是某网站建设立项需求,山西笑傲网站建设,带注册的网站需要多大空间,ui设计培训班有用吗目录 1、建造者模式含义 2、建造者模式的讲解 3、使用C实现建造者模式的实例 4、建造者模式的优缺点 5、建造者模式VS工厂模式 1、建造者模式含义 The intent of the Builder design pattern is to separate the construction of a complex object from its representatio…目录 1、建造者模式含义 2、建造者模式的讲解 3、使用C实现建造者模式的实例 4、建造者模式的优缺点 5、建造者模式VS工厂模式 1、建造者模式含义 The intent of the Builder design pattern is to separate the construction of a complex object from its representation. By doing so the same construction process can create different representations. 将一个复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示。 其实上面这句话本身是有点晦涩难懂后面在网上看到有人这样说便留下深刻的印象 当一个类的构造函数参数个数超过4个而且这些参数有些是可选的参数考虑使用构造者模式。 这个解释也可以理解为应用场景当我们单纯懂得设计模式怎么实现并不重要重要的是要知道适用于什么场景这个就得靠一些经验和思考了。 2、建造者模式的讲解 从上面的UML可以看出建造者模式涉及到以下四个角色的概念 1抽象建造者角色提供一个接口规范产品对象的建造一般由子类实现。一般来说产品的组成部分数与建造方法数相同即有多少组成部分就有多少个建造方法。 2具体建造者角色该角色实现了抽象建造者抽象建造者接口主要是实现所有声明的方法以及返回建造好的产品实例。 3导演者角色负责调用具体建造者按照顺序建造产品。导演者只负责调度真正执行的是具体建造者角色。 4产品角色该角色是建造的复杂对象提供基本方法。 3、使用C实现建造者模式的实例 #include iostream #include string// 产品类 class Product { public:void setPartA(const std::string partA) {m_partA partA;}void setPartB(const std::string partB) {m_partB partB;}void setPartC(const std::string partC) {m_partC partC;}void show() const {std::cout Product Parts: m_partA , m_partB , m_partC std::endl;}private:std::string m_partA;std::string m_partB;std::string m_partC; };// 抽象建造者类 class Builder { public:virtual void buildPartA() 0;virtual void buildPartB() 0;virtual void buildPartC() 0;virtual Product* getResult() 0; };// 具体建造者类 class ConcreteBuilder : public Builder { public:void buildPartA() override {m_product-setPartA(Part A);}void buildPartB() override {m_product-setPartB(Part B);}void buildPartC() override {m_product-setPartC(Part C);}Product* getResult() override {return m_product;}private:Product* m_product new Product(); };// 指挥者类 class Director { public:void construct(Builder* builder) {builder-buildPartA();builder-buildPartB();builder-buildPartC();} };int main() {Director director;ConcreteBuilder builder;director.construct(builder);Product* product builder.getResult();product-show();delete product;return 0; }在上述示例中我们定义了一个产品类Product它有三个部分Part A、Part B、Part C。然后我们定义了一个抽象建造者类Builder其中包含了构建产品各个部分的纯虚函数。接着我们实现了具体的建造者类ConcreteBuilder它实现了抽象建造者类的纯虚函数并负责构建产品对象。最后我们定义了一个指挥者类Director它负责调用建造者的方法来构建产品。 在主函数中我们创建了一个具体的建造者对象并将其传递给指挥者对象。指挥者根据具体的建造者对象来构建产品最终得到一个完整的产品对象。我们可以通过产品对象的show()方法来展示产品的各个部分。 这就是一个简单的建造者模式的C源码示例 4、建造者模式的优缺点 1优点 1分离构建过程和表示建造者模式可以将一个复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示形式。这样可以提高代码的灵活性和可维护性。 2更好的封装性通过建造者模式可以将对象的构建过程封装在具体的建造者类中客户端只需要与指挥者进行交互无需关心具体的构建细节。这样可以隐藏对象的创建过程提供更好的封装性。 3可以控制构建过程建造者模式允许你逐步构建对象并在每个步骤中进行必要的操作、检查或验证。这样可以更加灵活地控制对象的构建过程满足不同的需求。 4创建不同表示形式的对象通过定义不同的建造者和指挥者可以根据需求定制不同的构建过程创建不同的产品表示形式。这样可以提供更多的选择和灵活性。 2缺点 1增加了代码量使用建造者模式会增加额外的类和接口从而增加了代码量。如果对象的构建过程比较简单使用建造者模式可能会显得过于繁琐。 2增加了系统复杂性引入建造者模式会增加系统的复杂性因为需要定义多个类和接口并且需要协调指挥者和建造者之间的关系。这可能会增加理解和维护的难度。 3不适用于创建简单对象如果对象的构建过程比较简单只有少量的步骤或参数使用建造者模式可能会显得过于繁琐。此时直接使用简单工厂或工厂方法模式可能更加合适。 总的来说建造者模式通过分离构建过程和表示提供了更好的封装性和灵活性可以控制构建过程并创建不同表示形式的对象。然而它也增加了代码量和系统复杂性不适用于创建简单对象。 5、建造者模式VS工厂模式 建造者模式和工厂模式是两种常见的创建型设计模式它们有以下几点区别 1目的不同工厂模式关注的是创建对象的过程将对象的创建逻辑封装在一个工厂类中通过工厂类来创建具体的对象。而建造者模式关注的是创建复杂对象的过程将对象的构建过程与其表示分离通过指挥者和建造者来逐步构建对象。 2对象复杂度不同工厂模式适用于创建简单对象通常只需要一两个步骤即可完成对象的创建。而建造者模式适用于创建复杂对象对象的构建过程需要多个步骤并且可以根据需求定制不同的构建过程。 3调用方式不同工厂模式通过调用工厂类的方法来创建对象客户端直接与工厂类交互。而建造者模式通过指挥者来控制建造者的构建过程客户端只需要与指挥者进行交互无需直接与建造者类交互。 4灵活性不同工厂模式相对较为灵活可以根据需要扩展和添加新的产品类型只需要添加对应的具体产品和工厂类即可。而建造者模式相对更加灵活可以根据需要定制不同的构建过程创建不同的产品表示形式。 总的来说工厂模式适用于创建简单对象将对象的创建过程封装在工厂类中而建造者模式适用于创建复杂对象通过指挥者和建造者来分步构建对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可以做试题的网站阿里云手机网站建设

目录 一、损失函数是什么二、常见的损失函数2.1 nn.CrossEntropyLoss交叉熵损失函数2.1.1 交叉熵的概念2.2.2 交叉熵代码实现2.2.3 加权重损失 2.2 nn.NLLLoss2.2.1 代码实现 2.3 nn.BCELoss2.3.1 代码实现 2.4 nn.BCEWithLogitsLoss2.4.1 代码实现 三、优化器Optimizer3.1 什么…

吉安建设公司网站如何创建网站页面

显示接口实现与隐式接口实现 何为显式接口实现、隐式接口实现?简单概括,使用接口名作为方法名的前缀,这称为“显式接口实现”;传统的实现方式,称为“隐式接口实现”。下面给个例子。 IChineseGreeting接口,…

做像美团淘宝平台网站多少钱南京seo公司哪家

文章目录 1、简述2、效果图2.1、命令行(不带GUI)2.2、GUI(这里用的Qt) 3、串口硬件知识普及4、核心实现4.1、Qt的pro文件4.2、main文件4.3、SSerialPort类4.3.1、头文件4.3.2、源文件 4.4、Linux下的CMakeLists.txt 1、简述 本文…

网站首页调用网站标题网络管理系统密码

当我们谈论设置MySQL数据库的IP白名单时,我们通常是在指定哪些IP地址被允许连接到数据库服务器。这是一种安全措施,可确保只有受信任的主机可以访问数据库。以下是一个分步指南,以及如何设置MySQL的IP白名单的说明。 步骤1: 登录到MySQL服务…

乐清 网站建设英德建设网站

蓄水池抽样算法 描述Java基本实现蓄水池模型参与抽样 描述 该算法可用于从数据流中随机抽取指定数量的样本。 假设目标样本数量为 n,参与抽样的数量为 i。 蓄水池容量为 n,参与抽样的数量为 i 每接收一个样本,不断计算抽样结果:…

seo网站有哪些视频拍摄方案

GAN论文逐段精读【论文精读】这是李沐博士论文精读的第五篇论文,这次精读的论文是 GAN。目前谷歌学术显示其被引用数已经达到了37000。GAN 应该是机器学习过去五年上头条次数最多的工作,例如抖音里面生成人物卡通头像,人脸互换以及自动驾驶中…

简单企业网站福建省住房和城乡建设厅网站电话

1. 描述Kubernetes集群中连接数不够的情况,以及可能导致的后果。 在Kubernetes集群中,连接数不够通常指的是网络连接的限制,这可能是由于以下几个原因造成的: 负载过高:当服务或应用承受的请求量超过其能够处理的范围…

网站栏目页模板七牛云招聘

在编程中,super关键字通常用于引用父类(超类)的属性或方法。以下是在不同语言中super关键字的使用示例: JavaScript (ES6 Class Syntax) Javascript 1class Parent { 2 display() { 3 console.log("Parent class…

机票旅游网站开发网页游戏排行榜 2020

1、打开我们的项目所在文件夹 2、在项目文件夹【鼠标右击】弹出菜单,在【鼠标右击】弹出的菜单中,点击【Git Bash Here】,弹出运行窗口(前提条件是已装好git环境) 3、在命令窗口中输入:git init 4、在 Gite…

公司设计网站需要注意哪些电子商务具体是干什么的

play 打包 模块早在11月,我就Play框架的 Nicolas Leroux谈到了如何创建模块存储库。 他同意这将是一个好主意,但是时间不足使我无法开始。 在上周Google Play小组发生了暴风雨之后,我决定将其优先处理。 可以在几周内提供可用的原型。 概述&a…

网络公司怎样推广网站网站建设的关键事项

目录 判断字符是否唯⼀(easy) 题目解析 讲解算法原理 编写代码 丢失的数字(easy) 题目解析 讲解算法原理 编写代码 判断字符是否唯⼀(easy) 题目解析 1.题目链接:. - 力扣&#xff08…

河南网站推广优化公司哪家好做网站编辑需要学什么

如果有遗漏,评论区告诉我进行补充 面试官: Mysql是如何回滚事务的? 我回答: 在MySQL中,事务回滚是一个重要的机制,用于在发生错误或异常时撤销所有未提交的更改,确保数据库的一致性和完整性。事务回滚的过程涉及多个内部机制和数据结构&a…

深圳营销网站制作专做国外旅游的网站

C 标准库 <math.h> C <math.h>头文件声明了一组函数来执行数学运算&#xff0c;例如&#xff1a;sqrt()计算平方根&#xff0c;log()查找数字的自然对数&#xff0c;等等。 math.h 头文件定义了各种数学函数和一个宏。在这个库中所有可用的函数都带有一个 double…

广州有做网站的公司吗企业官网下载

GPMC并口简介 GPMC(General Purpose Memory Controller)是TI处理器特有的通用存储器控制器接口&#xff0c;支持8/16bit数据位宽&#xff0c;支持128MB访问空间&#xff0c;最高时钟速率133MHz。GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等处理器专用于与外部存储器设备的接口…

上海大型网站建设公司排名wordpress建cms

模运算 模运算是大数运算中的常用操作。如果一个数太大&#xff0c;无法直接输出&#xff0c;或者不需要直接输出&#xff0c;则可以对它取模&#xff0c;缩小数值再输出。取模可以防止溢出&#xff0c;这是常见的操作。 模是英文mod的音译&#xff0c;取模实际上是求余。 取…

青岛网站优化大型网站建设的价格

阿里妹导读&#xff1a;技术传播的价值&#xff0c;不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径&#xff0c;加速业务的上线速率&#xff0c;也体现在优秀工程师在工作效率提升、产品性能优化和用户体验改善等经验方面的分享&#xff0c;以提高我们的专业能…

济南企业如何建网站怎么样做网站管理员

一、认识存储单元指针是C语言最显著的特色。要理解指针的概念&#xff0c;需要先理解计算机读写内存的的方式以及变量的概念。计算机内存是以字节为单位划分内存单元的&#xff0c;每个内存单元占用一个字节&#xff0c;每个内存单元都有自己的地址编号&#xff0c;操作系统或软…

摄像头怎么做直播网站做网站运营需要培训吗

在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init&#xff0c;它们都可以达到重启系统的目的&#xff0c;但每个命令的内部工作过程是不同的。 Linux centos重启命令&#xff1a; 1、reboot 2、shutdown -r now 立刻重启(root用户使用) 3、shutdown -r 10 过…

校园网二手书交易网站建设新塘网站设计

&#x1f525;博客主页&#xff1a; 破浪前进 &#x1f516;系列专栏&#xff1a; Vue、React、PHP ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ JavaScript是一种非常流行和常用的编程语言&#xff0c;它在web开发中起着至关重要的作用&#xff0c;在实现网页动态交互、数据…