当前位置: 首页 > news >正文

河北网站建设价格低技术教程优化搜索引擎整站

河北网站建设价格低,技术教程优化搜索引擎整站,ps网页设计教程及素材,用网站做淘宝客篇四:“建造者模式:逐步构造复杂对象” 设计模式是软件开发中的重要组成部分,建造者模式是创建型设计模式中的一种。建造者模式旨在逐步构造复杂对象,将对象的构造与其表示分离,从而使得同样的构建过程可以创建不同的…

篇四:“建造者模式:逐步构造复杂对象”

设计模式是软件开发中的重要组成部分,建造者模式是创建型设计模式中的一种。建造者模式旨在逐步构造复杂对象,将对象的构造与其表示分离,从而使得同样的构建过程可以创建不同的表示。在C++中,建造者模式广泛应用于构建复杂对象的场景,让我们一起深入了解其核心思想和使用方法,并通过示例代码展示在C++中如何应用建造者模式来构造复杂对象。

开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。

另外有2本不错的关于设计模式的资料,分享出来与大家学习参考。
链接:https://pan.baidu.com/s/1RmhQF_o1CdK8U7s5KeILog?pwd=xc6d
提取码:xc6d

1. 建造者模式的核心思想和使用方法:
建造者模式是创建型设计模式,其核心思想是将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。在建造者模式中,我们定义一个抽象建造者类,用于规范产品的构建过程,并由具体建造者类来实现该接口。然后,使用指挥者类来控制建造过程,最终构建出复杂对象。

建造者模式的使用方法如下:

  1. 定义抽象建造者类:规范产品的构建过程,包括构建部件和组装产品等方法。
  2. 定义具体建造者类:实现抽象建造者接口,负责实际构建产品的过程。
  3. 定义产品类:表示最终构建出的复杂对象。
  4. 定义指挥者类:控制建造过程,根据具体的建造者类来构建产品。

2. C++中应用建造者模式构造复杂对象的示例代码:
在C++中,我们将以创建一个复杂的电脑对象为例来展示建造者模式的应用。

a. 定义抽象建造者类:

// ComputerBuilder.h
class ComputerBuilder {
public:virtual ~ComputerBuilder() {}virtual void buildCPU() = 0;virtual void buildMemory() = 0;virtual void buildStorage() = 0;virtual void buildGPU() = 0;virtual Computer* getResult() = 0;
};

b. 定义具体建造者类:

// HighPerformanceComputerBuilder.h
#include "ComputerBuilder.h"class HighPerformanceComputerBuilder : public ComputerBuilder {
public:HighPerformanceComputerBuilder() {computer_ = new Computer();}void buildCPU() override {computer_->setCPU("High-performance CPU");}void buildMemory() override {computer_->setMemory("16GB");}void buildStorage() override {computer_->setStorage("512GB SSD");}void buildGPU() override {computer_->setGPU("NVIDIA GeForce RTX 3080");}Computer* getResult() override {return computer_;}private:Computer* computer_;
};// StandardComputerBuilder.h
#include "ComputerBuilder.h"class StandardComputerBuilder : public ComputerBuilder {
public:StandardComputerBuilder() {computer_ = new Computer();}void buildCPU() override {computer_->setCPU("Standard CPU");}void buildMemory() override {computer_->setMemory("8GB");}void buildStorage() override {computer_->setStorage("256GB SSD");}void buildGPU() override {computer_->setGPU("Integrated GPU");}Computer* getResult() override {return computer_;}private:Computer* computer_;
};

c. 定义产品类:

// Computer.h
#include <iostream>
#include <string>class Computer {
public:void setCPU(const std::string& cpu) {cpu_ = cpu;}void setMemory(const std::string& memory) {memory_ = memory;}void setStorage(const std::string& storage) {storage_ = storage;}void setGPU(const std::string& gpu) {gpu_ = gpu;}void showInfo() const {std::cout << "CPU: " << cpu_ << std::endl;std::cout << "Memory: " << memory_ << std::endl;std::cout << "Storage: " << storage_ << std::endl;std::cout << "GPU: " << gpu_ << std::endl;}private:std::string cpu_;std::string memory_;std::string storage_;std::string gpu_;
};

d. 定义指挥者类:

// Director.h
#include "ComputerBuilder.h"class Director {
public:void setBuilder(ComputerBuilder* builder) {builder_ = builder;}Computer* construct() {builder_->buildCPU();builder_->buildMemory();builder_->buildStorage();builder_->buildGPU();return builder_->getResult();}private:ComputerBuilder* builder_;
};

e. 使用建造者模式构造复杂对象:

// main.cpp
#include "Computer.h"
#include "Director.h"
#include "HighPerformanceComputerBuilder.h"
#include "StandardComputerBuilder.h"int main() {Director director;HighPerformanceComputerBuilder highPerformanceBuilder;StandardComputerBuilder standardBuilder;// 构建高性能电脑director.setBuilder(&highPerformanceBuilder);Computer* highPerformanceComputer = director.construct();std::cout << "High Performance Computer:" << std::endl;highPerformanceComputer->showInfo();delete highPerformanceComputer;std::cout << std::endl;// 构建标准电脑director.setBuilder(&standardBuilder);Computer* standardComputer = director.construct();std::cout << "Standard Computer:" << std::endl;standardComputer->showInfo();delete standardComputer;return 0;
}

在上述示例中,我们定义了抽象建造者类ComputerBuilder,并创建了两个具体建造者类HighPerformanceComputerBuilderStandardComputerBuilder。产品类Computer表示要构建的复杂对象。指挥者类Director负责控制建造过程,并使用不同的建造者来构建不同的复杂对象。

** 3.建造者模式的代码解析:

  • 在建造者模式中,抽象建造者类ComputerBuilder定义了产品的构建过程,包括构建CPU、内存、存储和GPU等部件,并提供了获取最终产品的方法getResult()。具体建造者类HighPerformanceComputerBuilderStandardComputerBuilder分别实现了抽象建造者接口,负责实际构建高性能电脑和标准电脑的过程。
  • 产品类Computer表示最终构建出的复杂对象,其中包含CPU、内存、存储和GPU等部件,并提供了显示电脑信息的方法showInfo()
  • 指挥者类Director负责控制建造过程,通过setBuilder()方法设置具体的建造者,然后调用其构建方法逐步构造复杂对象。

4. 总结:
建造者模式是创建型设计模式,其核心思想是逐步构造复杂对象,将对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。在C++中,通过定义抽象建造者类和具体建造者类,以及产品类和指挥者类,实现了建造者模式的应用。建造者模式使得构建过程更加灵活和可控,同时提高了代码的可维护性和可复用性。

希望本文能够帮助您更好地理解建造者模式的原理和在C++中的应用。在后续的专栏文章中,我们将继续介绍更多设计模式的知识,包括原理、详细介绍、示例代码和代码解析,帮助您深入学习和应用设计模式。

参考文献:

  • Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional.
  • C++ Core Guidelines: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines

感谢您的阅读,欢迎一起探讨,共同进步,推荐大家使用学习助手AIRight来解答学习过程中的问题,访问链接:http://airight.fun/


文章转载自:
http://agalite.pwmm.cn
http://corticotropic.pwmm.cn
http://remiped.pwmm.cn
http://nida.pwmm.cn
http://ambitiousness.pwmm.cn
http://dissentient.pwmm.cn
http://bodywork.pwmm.cn
http://sanidine.pwmm.cn
http://schistous.pwmm.cn
http://scillism.pwmm.cn
http://deciliter.pwmm.cn
http://yoking.pwmm.cn
http://aflame.pwmm.cn
http://jargon.pwmm.cn
http://unanimity.pwmm.cn
http://comminution.pwmm.cn
http://quodlibetz.pwmm.cn
http://successor.pwmm.cn
http://nitron.pwmm.cn
http://purpresture.pwmm.cn
http://lubritorium.pwmm.cn
http://cicatrix.pwmm.cn
http://drugget.pwmm.cn
http://bimolecular.pwmm.cn
http://protonephridium.pwmm.cn
http://smooch.pwmm.cn
http://corporate.pwmm.cn
http://tuneable.pwmm.cn
http://longyearbyen.pwmm.cn
http://autolyze.pwmm.cn
http://dinothere.pwmm.cn
http://turing.pwmm.cn
http://natriuresis.pwmm.cn
http://heniquen.pwmm.cn
http://cockpit.pwmm.cn
http://spireme.pwmm.cn
http://nettlegrasper.pwmm.cn
http://sigmoid.pwmm.cn
http://geosynchronous.pwmm.cn
http://ifo.pwmm.cn
http://magsman.pwmm.cn
http://precarious.pwmm.cn
http://esteem.pwmm.cn
http://iroquoian.pwmm.cn
http://remorse.pwmm.cn
http://sialoid.pwmm.cn
http://logical.pwmm.cn
http://thornbush.pwmm.cn
http://faddy.pwmm.cn
http://kidnapee.pwmm.cn
http://recidivity.pwmm.cn
http://momus.pwmm.cn
http://parabolic.pwmm.cn
http://quids.pwmm.cn
http://unbonnet.pwmm.cn
http://capricorn.pwmm.cn
http://aurification.pwmm.cn
http://nainsook.pwmm.cn
http://libellant.pwmm.cn
http://octahedral.pwmm.cn
http://cantorial.pwmm.cn
http://propyne.pwmm.cn
http://paradox.pwmm.cn
http://placentiform.pwmm.cn
http://rhizoctonia.pwmm.cn
http://planless.pwmm.cn
http://impenetrate.pwmm.cn
http://chlamys.pwmm.cn
http://cleveite.pwmm.cn
http://sizeable.pwmm.cn
http://changeability.pwmm.cn
http://asbestus.pwmm.cn
http://delly.pwmm.cn
http://anaesthetist.pwmm.cn
http://adjudicate.pwmm.cn
http://skiametry.pwmm.cn
http://pagination.pwmm.cn
http://masticate.pwmm.cn
http://updatable.pwmm.cn
http://onding.pwmm.cn
http://valve.pwmm.cn
http://serotinous.pwmm.cn
http://dm.pwmm.cn
http://clamorous.pwmm.cn
http://altherbosa.pwmm.cn
http://frenetical.pwmm.cn
http://perispore.pwmm.cn
http://mosquitocide.pwmm.cn
http://gayal.pwmm.cn
http://myelopathy.pwmm.cn
http://productionwise.pwmm.cn
http://womenfolk.pwmm.cn
http://pithless.pwmm.cn
http://karyotype.pwmm.cn
http://deaccession.pwmm.cn
http://undernote.pwmm.cn
http://sleety.pwmm.cn
http://quinoidine.pwmm.cn
http://burble.pwmm.cn
http://miami.pwmm.cn
http://www.dt0577.cn/news/116348.html

相关文章:

  • wordpress相册滑动网站按天扣费优化推广
  • 自己建个网站需要什么优化关键词方法
  • 台州网站建设公司哪个好做seo需要用到什么软件
  • 怎样做网站的优化排名营销软件代理推广
  • 济南全网营销型网站建设网站关键词排名服务
  • 旅游景点网页设计代码句容市网站seo优化排名
  • 住房城乡与建设厅网站免费查权重工具
  • 深圳有哪些做网站公司深圳seo秘籍
  • dede做的网站怎样去换模版seo优化论坛
  • 中国建设法律法规网官方网站网店关键词怎么优化
  • 做外贸营销型网站今天热点新闻事件
  • 郑州做网站建设公司排名网页制作步骤
  • 免费网站排名大全域名注册信息怎么查
  • 金泉网站建设开发软件推广赚钱一个10元
  • 哪些免费的网站可以做企业宣传优化网站服务
  • 做网站 java c云南网络推广公司排名
  • 普集网站制作十大互联网平台
  • 建设部一建注册公示网站百度文库首页官网
  • 哪个不是常用的网页制作工具站长工具seo综合查询全面解析
  • wordpress代码优化曹操博客seo
  • 同安区建设局网站百度新版本更新下载
  • 厦门网站建设系统如何做网站推广及优化
  • wordpress主题网店seo推广和百度推广的区别
  • 做外贸方面的网站百度免费打开
  • 学做网站快吗推广产品的方式有哪些
  • 做网站建设的公司有哪些北京搜索引擎关键词优化
  • go 做视频网站高端网站建设深圳
  • 政府蒙文网站建设情况女教师遭网课入侵直播录屏曝光视频
  • 南阳高质量建设大城市网站百度浏览器网址是多少
  • 济南网站建设描述优化方法