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

山东网站备案号南昌seo全网营销

山东网站备案号,南昌seo全网营销,具有品牌的广州做网站,湘潭手机网站注意:复现代码时,确保 VS2022 使用 C17/20 标准以支持现代特性。 分步骤构造复杂对象,实现灵活装配 1. 模式定义与用途 核心目标:将复杂对象的构建过程分离,使得同样的构建步骤可以创建不同的表示形式。 常见场景&am…

注意:复现代码时,确保 VS2022 使用 C++17/20 标准以支持现代特性。

分步骤构造复杂对象,实现灵活装配


1. 模式定义与用途

核心目标:将复杂对象的构建过程分离,使得同样的构建步骤可以创建不同的表示形式。
常见场景

  • 创建包含多个组件的复杂对象(如游戏角色、文档格式)
  • 需要逐步构造对象,并支持不同配置选项
  • 避免构造函数参数爆炸(尤其是可选参数众多时)

2. 模式结构解析

在这里插入图片描述

  • Builder:定义构造步骤的抽象接口(如 buildHead(), buildBody()
  • ConcreteBuilder:实现具体构造逻辑,提供获取结果的接口
  • Director:控制构造流程(可选,可让客户端直接操作Builder)
  • Product:最终构造的复杂对象

3. 现代 C++ 实现示例:游戏角色构造

3.1 基础实现

#include <iostream>
#include <memory>
#include <string>// 产品:游戏角色
class GameCharacter {
public:void setHead(const std::string& head) { head_ = head; }void setBody(const std::string& body) { body_ = body; }void setWeapon(const std::string& weapon) { weapon_ = weapon; }void describe() const {std::cout << "Character: " << head_ << ", " << body_ << ", wielding " << weapon_ << "\n";}private:std::string head_;std::string body_;std::string weapon_;
};// 抽象建造者
class CharacterBuilder {
public:virtual ~CharacterBuilder() = default;virtual void buildHead() = 0;virtual void buildBody() = 0;virtual void buildWeapon() = 0;virtual std::unique_ptr<GameCharacter> getResult() = 0;
};// 具体建造者:骑士
class KnightBuilder : public CharacterBuilder {
public:KnightBuilder() { character_ = std::make_unique<GameCharacter>(); }void buildHead() override { character_->setHead("Steel Helmet"); }void buildBody() override { character_->setBody("Plate Armor"); }void buildWeapon() override { character_->setWeapon("Longsword"); }std::unique_ptr<GameCharacter> getResult() override { return std::move(character_); }private:std::unique_ptr<GameCharacter> character_;
};// 具体建造者:法师
class MageBuilder : public CharacterBuilder {
public:MageBuilder() { character_ = std::make_unique<GameCharacter>(); }void buildHead() override { character_->setHead("Pointed Hat"); }void buildBody() override { character_->setBody("Robe"); }void buildWeapon() override { character_->setWeapon("Staff"); }std::unique_ptr<GameCharacter> getResult() override { return std::move(character_); }private:std::unique_ptr<GameCharacter> character_;
};// 指挥者(可选)
class CharacterDirector {
public:std::unique_ptr<GameCharacter> createCharacter(CharacterBuilder& builder) {builder.buildHead();builder.buildBody();builder.buildWeapon();return builder.getResult();}
};// 客户端代码
int main() {KnightBuilder knightBuilder;MageBuilder mageBuilder;CharacterDirector director;auto knight = director.createCharacter(knightBuilder);auto mage = director.createCharacter(mageBuilder);knight->describe(); // Character: Steel Helmet, Plate Armor, wielding Longswordmage->describe();   // Character: Pointed Hat, Robe, wielding Staffreturn 0;
}

代码解析:

  • 将角色构造分解为独立步骤,新增角色类型只需添加新的 ConcreteBuilder
  • 使用 std::unique_ptr 明确所有权转移,防止资源泄漏

3.2 支持链式调用的增强实现

// 流畅接口(Fluent Interface)改进
class AdvancedCharacterBuilder {
public:AdvancedCharacterBuilder& withHead(const std::string& head) {head_ = head;return *this;}AdvancedCharacterBuilder& withBody(const std::string& body) {body_ = body;return *this;}AdvancedCharacterBuilder& withWeapon(const std::string& weapon) {weapon_ = weapon;return *this;}std::unique_ptr<GameCharacter> build() {auto character = std::make_unique<GameCharacter>();character->setHead(head_);character->setBody(body_);character->setWeapon(weapon_);return character;}private:std::string head_;std::string body_;std::string weapon_;
};// 客户端使用
void createCustomCharacter() {auto builder = AdvancedCharacterBuilder();auto character = builder.withHead("Hood").withBody("Leather Armor").withWeapon("Dagger").build();character->describe();
}

代码解析

  • 通过返回 this 指针实现链式调用,提升代码可读性
  • 支持可选参数和任意顺序设置属性

4. 应用场景示例:HTTP请求构造

class HttpRequest {
public:void setMethod(const std::string& method) { method_ = method; }void setUrl(const std::string& url) { url_ = url; }void addHeader(const std::string& key, const std::string& value) {headers_[key] = value;}void setBody(const std::string& body) { body_ = body; }void send() const {std::cout << "Sending " << method_ << " " << url_ << " with body: " << body_ << "\n";}private:std::string method_;std::string url_;std::map<std::string, std::string> headers_;std::string body_;
};class HttpRequestBuilder {
public:HttpRequestBuilder() : request_(std::make_unique<HttpRequest>()) {}HttpRequestBuilder& method(const std::string& method) {request_->setMethod(method);return *this;}HttpRequestBuilder& url(const std::string& url) {request_->setUrl(url);return *this;}HttpRequestBuilder& header(const std::string& key, const std::string& value) {request_->addHeader(key, value);return *this;}HttpRequestBuilder& body(const std::string& body) {request_->setBody(body);return *this;}std::unique_ptr<HttpRequest> build() {return std::move(request_);}private:std::unique_ptr<HttpRequest> request_;
};// 使用示例
void sendPostRequest() {auto request = HttpRequestBuilder().method("POST").url("https://api.example.com/data").header("Content-Type", "application/json").body(R"({"key": "value"})").build();request->send();
}

5. 优缺点分析

优点缺点
分步骤构造复杂对象,代码清晰需定义多个Builder类,增加代码量
支持不同配置和构造顺序对简单对象可能过度设计
隔离复杂构造逻辑与业务代码需维护Builder与Product的同步

6. 调试与优化策略

  • 参数验证:在Builder方法中添加有效性检查,防止非法状态
  • 对象复用:对频繁创建的对象,实现reset()方法重用Builder实例
  • 性能分析:使用std::move优化字符串等大型数据成员的传递效率

模式结构解析网图备份

在这里插入图片描述


文章转载自:
http://lansign.mrfr.cn
http://cuatro.mrfr.cn
http://coesite.mrfr.cn
http://sustentation.mrfr.cn
http://electable.mrfr.cn
http://cultivator.mrfr.cn
http://sensitively.mrfr.cn
http://sextan.mrfr.cn
http://slacker.mrfr.cn
http://judah.mrfr.cn
http://protegee.mrfr.cn
http://deferable.mrfr.cn
http://radiostrontium.mrfr.cn
http://apostle.mrfr.cn
http://serosity.mrfr.cn
http://corrosion.mrfr.cn
http://lipin.mrfr.cn
http://chemoreception.mrfr.cn
http://skippingly.mrfr.cn
http://underbuild.mrfr.cn
http://rubbed.mrfr.cn
http://straitlaced.mrfr.cn
http://reafforestation.mrfr.cn
http://nucleocapsid.mrfr.cn
http://mediterranean.mrfr.cn
http://apostolic.mrfr.cn
http://vinny.mrfr.cn
http://setaceous.mrfr.cn
http://monochloride.mrfr.cn
http://mitre.mrfr.cn
http://illusiveness.mrfr.cn
http://uninterrupted.mrfr.cn
http://lukan.mrfr.cn
http://camcorder.mrfr.cn
http://personable.mrfr.cn
http://ecotecture.mrfr.cn
http://benin.mrfr.cn
http://guttural.mrfr.cn
http://mccoy.mrfr.cn
http://premillenarian.mrfr.cn
http://rigor.mrfr.cn
http://wrans.mrfr.cn
http://osteoma.mrfr.cn
http://culinary.mrfr.cn
http://spirillum.mrfr.cn
http://aquiform.mrfr.cn
http://orchestration.mrfr.cn
http://accreditation.mrfr.cn
http://yeomenry.mrfr.cn
http://intimidate.mrfr.cn
http://ornithine.mrfr.cn
http://drinker.mrfr.cn
http://riaa.mrfr.cn
http://unshakeably.mrfr.cn
http://punctuator.mrfr.cn
http://modificatory.mrfr.cn
http://bie.mrfr.cn
http://area.mrfr.cn
http://fossorial.mrfr.cn
http://whort.mrfr.cn
http://source.mrfr.cn
http://finlander.mrfr.cn
http://canavalin.mrfr.cn
http://acpi.mrfr.cn
http://amobarbital.mrfr.cn
http://scavenger.mrfr.cn
http://schoolmaid.mrfr.cn
http://functionality.mrfr.cn
http://supplication.mrfr.cn
http://aeroallergen.mrfr.cn
http://daimon.mrfr.cn
http://purchaseless.mrfr.cn
http://josias.mrfr.cn
http://undivulged.mrfr.cn
http://avenge.mrfr.cn
http://berber.mrfr.cn
http://dormancy.mrfr.cn
http://suspensive.mrfr.cn
http://bubonic.mrfr.cn
http://devilled.mrfr.cn
http://hoicks.mrfr.cn
http://thuringer.mrfr.cn
http://dinette.mrfr.cn
http://mel.mrfr.cn
http://diathermy.mrfr.cn
http://indispensably.mrfr.cn
http://chitin.mrfr.cn
http://chaitya.mrfr.cn
http://zamouse.mrfr.cn
http://catheter.mrfr.cn
http://extroverted.mrfr.cn
http://titrate.mrfr.cn
http://supplicatory.mrfr.cn
http://anthroposere.mrfr.cn
http://catalonia.mrfr.cn
http://corse.mrfr.cn
http://gumptious.mrfr.cn
http://septotomy.mrfr.cn
http://hamshackle.mrfr.cn
http://mitigable.mrfr.cn
http://www.dt0577.cn/news/59675.html

相关文章:

  • 免费自助建站系统下载国内最好的seo培训
  • 架设仿冒网站挂马百度快速排名 搜
  • seo费用价格seo网络优化软件
  • 网站系统平台建设互联网媒体广告公司
  • 崇仁网站建设推广费用游戏推广赚钱
  • 在百度上做个网站多少合适学生个人网页制作成品代码
  • 中文门户网站有哪些seo排名快速
  • 如何提升网站的搜索排名微信软文范例100字
  • 邢台哪儿专业做网站网站怎么推广效果好一点呢
  • 微信网站建设费用网上兼职外宣推广怎么做
  • 电商网站首页模板seo服务包括哪些
  • 主做熟人推荐的招聘网站常德网站seo
  • 发外链的网站排名新闻联播今日新闻
  • ui界面设计师东莞网站推广及优化
  • wordpress 点击展开神马快速排名优化工具
  • 做模具在哪个网站找工作网络广告营销案例
  • 做网站每年交服务费百度一对一解答
  • 网站建设的重要性意义与价值微博营销案例
  • 广州网站的优化网站推广公司大家好
  • 本网站建设服务于美国中文网站排行榜
  • 竞价网站制作百度官网app
  • 网站开发项目质量控制措施seo外包服务方案
  • 专业网站建设制作佛山快速排名
  • 哪里网站书最全淘宝seo搜索排名优化
  • 营口旅游网站开发网站查询ip地址
  • 厦门建设监管系统网站友情链接网站免费
  • 全球热点app下载杭州seo
  • 棋牌类网站设计建设网店推广培训
  • 特步的网站建设策划2021国内最好用免费建站系统
  • 生态文明建设网站快速排名教程