阿里云上的网站建设网站文章更新要求

张小明 2026/1/12 0:08:48
阿里云上的网站建设,网站文章更新要求,什么网站可以做投资,金融平台网站开发一、建造者模式 1.1、核心思想 将一个复杂对象的构建与它的表示分离#xff0c;使得同样的构建过程可以创建不同的表示。#xff08;说人话#xff09;创建步骤复杂#xff0c;需要过多参数#xff0c;用户只提供自己的参数#xff0c;只关心最后的结果#xff…一、建造者模式1.1、核心思想将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。说人话创建步骤复杂需要过多参数用户只提供自己的参数只关心最后的结果不关心中间的过程。比如diy主机CPU:是考虑intel还是AMDi5还是Rzen5 9700x等内存是ddr5还是ddr4选择哪个厂家容量多大时序多少等。1.2、为什么需要建造者模式问题场景以DIY主机为例// 糟糕的设计伸缩构造函数模式classComputer{public:// 构造函数1只有必填参数Computer(conststringcpu,conststringram):cpu_(cpu),ram_(ram){}// 构造函数2加上可选参数Computer(conststringcpu,conststringram,conststringstorage):cpu_(cpu),ram_(ram),storage_(storage){}// 构造函数3再加上更多可选参数...Computer(conststringcpu,conststringram,conststringstorage,conststringgpu,conststringmonitor):cpu_(cpu),ram_(ram),storage_(storage),gpu_(gpu),monitor_(monitor){}// 更多构造函数...// 问题参数太多难以阅读和维护private:string cpu_;string ram_;string storage_;string gpu_;string monitor_;boolbluetooth_false;// ... 更多成员};// 使用哪个参数对应什么完全看不懂Computercomputer(i7,16GB,1TB SSD,RTX 3080,27寸4K,true,false,true);问题点构造函数的参数太多难以阅读和维护。用户需要记住每个参数的顺序和类型容易出错。扩展性差每次增加新属性都需要修改构造函数。建造者模式解决方案构建产品类// 产品类电脑classComputer{public:// 使用友元类让Builder可以访问私有成员friendclassComputerBuilder;voidshow()const{std::cout 电脑配置 std::endl;std::coutCPU: cpu_std::endl;std::cout内存: ram_std::endl;if(!storage_.empty()){std::cout存储: storage_std::endl;}if(!gpu_.empty()){std::cout显卡: gpu_std::endl;}if(!monitor_.empty()){std::cout显示器: monitor_std::endl;}std::cout蓝牙: (bluetooth_?支持:不支持)std::endl;std::coutWiFi: (wifi_?支持:不支持)std::endl;std::cout总价: ¥price_std::endl;}private:// 私有构造函数只能通过Builder创建Computer()default;// 电脑组件std::string cpu_;std::string ram_;std::string storage_;std::string gpu_;std::string monitor_;boolbluetooth_false;boolwifi_false;doubleprice_0.0;};构建建造者类// 抽象建造者classComputerBuilder{public:virtual~ComputerBuilder()default;// 构建步骤virtualvoidbuildCPU(conststd::stringcpu)0;virtualvoidbuildRAM(conststd::stringram)0;virtualvoidbuildStorage(conststd::stringstorage)0;virtualvoidbuildGPU(conststd::stringgpu)0;virtualvoidbuildMonitor(conststd::stringmonitor)0;virtualvoidbuildBluetooth(boolenabled)0;virtualvoidbuildWifi(boolenabled)0;// 获取产品virtualstd::unique_ptrComputergetResult()0;};构建具体建造者类// 具体建造者游戏电脑建造者classGamingComputerBuilder:publicComputerBuilder{private:std::unique_ptrComputercomputer_;public:GamingComputerBuilder(){computer_std::make_uniqueComputer();computer_-price_0.0;// 初始价格}voidbuildCPU(conststd::stringcpu)override{computer_-cpu_cpu;computer_-price_(cpu.find(i9)!std::string::npos)?3500:2500;std::cout安装CPU: cpustd::endl;}voidbuildRAM(conststd::stringram)override{computer_-ram_ram;computer_-price_(ram.find(32GB)!std::string::npos)?1200:800;std::cout安装内存: ramstd::endl;}voidbuildStorage(conststd::stringstorage)override{computer_-storage_storage;computer_-price_(storage.find(2TB)!std::string::npos)?1500:800;std::cout安装存储: storagestd::endl;}voidbuildGPU(conststd::stringgpu)override{computer_-gpu_gpu;computer_-price_(gpu.find(RTX)!std::string::npos)?5000:2000;std::cout安装显卡: gpustd::endl;}voidbuildMonitor(conststd::stringmonitor)override{computer_-monitor_monitor;computer_-price_(monitor.find(4K)!std::string::npos)?2000:1000;std::cout连接显示器: monitorstd::endl;}voidbuildBluetooth(boolenabled)override{computer_-bluetooth_enabled;computer_-price_enabled?100:0;std::cout配置蓝牙: (enabled?支持:不支持)std::endl;}voidbuildWifi(boolenabled)override{computer_-wifi_enabled;computer_-price_enabled?150:0;std::cout配置WiFi: (enabled?支持:不支持)std::endl;}std::unique_ptrComputergetResult()override{std::cout游戏电脑组装完成std::endl;returnstd::move(computer_);}};// 具体建造者办公电脑建造者classOfficeComputerBuilder:publicComputerBuilder{private:std::unique_ptrComputercomputer_;public:OfficeComputerBuilder(){computer_std::make_uniqueComputer();computer_-price_0.0;}voidbuildCPU(conststd::stringcpu)override{computer_-cpu_cpu;computer_-price_(cpu.find(i5)!std::string::npos)?1200:800;std::cout安装CPU: cpustd::endl;}voidbuildRAM(conststd::stringram)override{computer_-ram_ram;computer_-price_400;// 办公电脑内存价格固定std::cout安装内存: ramstd::endl;}voidbuildStorage(conststd::stringstorage)override{computer_-storage_storage;computer_-price_500;std::cout安装存储: storagestd::endl;}voidbuildGPU(conststd::stringgpu)override{// 办公电脑默认集成显卡if(!gpu.empty()){computer_-gpu_gpu;computer_-price_800;std::cout安装显卡: gpustd::endl;}}voidbuildMonitor(conststd::stringmonitor)override{computer_-monitor_monitor;computer_-price_800;std::cout连接显示器: monitorstd::endl;}voidbuildBluetooth(boolenabled)override{computer_-bluetooth_enabled;computer_-price_enabled?50:0;std::cout配置蓝牙: (enabled?支持:不支持)std::endl;}voidbuildWifi(boolenabled)override{computer_-wifi_enabled;computer_-price_enabled?80:0;std::cout配置WiFi: (enabled?支持:不支持)std::endl;}std::unique_ptrComputergetResult()override{std::cout办公电脑组装完成std::endl;returnstd::move(computer_);}};指挥者Director指导构建过程但不直接参与具体建造细节。// 指挥者指导构建过程classComputerDirector{public:voidconstructGamingComputer(ComputerBuilderbuilder){std::cout\n开始构建高性能游戏电脑...std::endl;builder.buildCPU(Intel i9-13900K);builder.buildRAM(32GB DDR5);builder.buildStorage(2TB NVMe SSD);builder.buildGPU(NVIDIA RTX 4080);builder.buildMonitor(32寸4K 144Hz);builder.buildBluetooth(true);builder.buildWifi(true);}voidconstructOfficeComputer(ComputerBuilderbuilder){std::cout\n开始构建办公电脑...std::endl;builder.buildCPU(Intel i5-12400);builder.buildRAM(16GB DDR4);builder.buildStorage(512GB SSD);builder.buildGPU();// 集成显卡builder.buildMonitor(24寸1080P);builder.buildBluetooth(true);builder.buildWifi(true);}voidconstructBasicComputer(ComputerBuilderbuilder){std::cout\n开始构建基础电脑...std::endl;builder.buildCPU(Intel i3-12100);builder.buildRAM(8GB DDR4);builder.buildStorage(256GB SSD);builder.buildMonitor(21.5寸1080P);// 不调用 buildGPU, buildBluetooth, buildWifi 使用默认值}};// 使用示例voiddemoBuilderPattern(){std::cout 建造者模式演示 std::endl;ComputerDirector director;// 构建游戏电脑GamingComputerBuilder gamingBuilder;director.constructGamingComputer(gamingBuilder);autogamingPCgamingBuilder.getResult();gamingPC-show();// 构建办公电脑OfficeComputerBuilder officeBuilder;director.constructOfficeComputer(officeBuilder);autoofficePCofficeBuilder.getResult();officePC-show();// 自定义构建std::cout\n 自定义构建 std::endl;GamingComputerBuilder customBuilder;customBuilder.buildCPU(AMD Ryzen 7 7800X3D);customBuilder.buildRAM(64GB DDR5);customBuilder.buildStorage(4TB NVMe SSD);customBuilder.buildGPU(AMD RX 7900 XTX);customBuilder.buildMonitor(34寸曲面带鱼屏);customBuilder.buildBluetooth(true);customBuilder.buildWifi(true);autocustomPCcustomBuilder.getResult();customPC-show();}1.3、建造者模式常见的四个角色Product(产品角色):一个具体的产品对象比如上面的ComputerBuilder(抽象建造者):定义构建步骤的接口比如上面的ComputerBuilderConcreteBuilder(具体建造者):实现构建步骤比如上面的GamingComputerBuilder,OfficeComputerBuilderDirector(指挥者):指导构建过程以及隔离客户与对象的生产过程比如上面的ComputerDirector附上UML类图:二、总结2.1、优缺点优点缺点构造过程清晰可控增加了代码复杂度避免伸缩构造函数需要创建多个类可以分布构建对象适合复杂对象简单对象不划算更好的参数验证产品类需要暴露给建造者2.2、适用场景创建复杂对象对象有很多组成部分构造过程复杂构造过程需要精细控制需要细化构建步骤对象有很多可选参数需要创建不同表示的对象同样的构建过程不同的配置2.3、建造者模式 VS 工厂模式工厂模式侧重于创建对象不关心构建过程建造者模式侧重于构建过程不关心对象类型
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

兴宁市网站建设河南省中原建设有限公司网站

第一章:远程开发效率翻倍,VSCode文件同步配置你真的掌握了吗?在现代软件开发中,远程开发已成为常态。VSCode 通过 Remote - SSH、Remote - Containers 等扩展,极大提升了开发者在远程服务器或容器中工作的效率。而文件…

张小明 2026/1/10 17:49:43 网站建设

网站定制开发四大基本原则企业所得税优惠政策最新2022计算

C语言中的函数、长跳转与信号处理机制解析 1. 复合字面量与代码优化 在某些代码示例中,省略 printf 语句后, while 循环使得复合字面量占用的资源可被复用。而对于另一些示例,复合字面量定义的作用域是整个包围块,对象会一直存活直到该块结束,但这可能导致资源占用无…

张小明 2026/1/9 20:54:50 网站建设

四大门户网站渠道游戏官网

3大实战案例深度解析:ag-ui如何彻底解决多AI框架集成难题 【免费下载链接】ag-ui 项目地址: https://gitcode.com/gh_mirrors/agu/ag-ui 还在为项目里同时集成LangGraph、CrewAI、LlamaIndex而头疼吗?每次新加一个AI框架都要重新设计通信协议、处…

张小明 2026/1/10 17:49:46 网站建设

可以和朋友合资做网站吗商务网站建设实训过程

智能排版革命:如何让论文写作效率提升300% 【免费下载链接】SJTUThesis 上海交通大学 LaTeX 论文模板 | Shanghai Jiao Tong University LaTeX Thesis Template 项目地址: https://gitcode.com/gh_mirrors/sj/SJTUThesis 还在为论文格式调整而熬夜吗&#xf…

张小明 2026/1/10 17:49:49 网站建设

宝安公司网站制作哪家公司好昌黎建设局网站

操作系统内核相关知识与资源汇总 在操作系统的学习和研究领域,有众多的知识和资源可供探索。以下将为大家详细介绍一些关于不同内核的书籍、重要的概念以及相关的工具和方法。 内核相关书籍推荐 Unix 内核相关书籍 特定 Unix 版本讨论类 Bach, Maurice 的 The Design of…

张小明 2026/1/10 17:49:47 网站建设

dedecms网站搬家软件网站模板

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个智能检测工具,能够自动扫描系统环境,检测Hyper-V是否启用及其相关冲突。工具应提供以下功能:1. 自动检测系统Hyper-V状态;2…

张小明 2026/1/10 17:49:47 网站建设