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

罗湖网站设计价格免费加精准客源

罗湖网站设计价格,免费加精准客源,网站设计项目,银行存款营销活动方案注意#xff1a;复现代码时#xff0c;确保 VS2022 使用 C17/20 标准以支持现代特性。 分步骤构造复杂对象#xff0c;实现灵活装配 1. 模式定义与用途 核心目标#xff1a;将复杂对象的构建过程分离#xff0c;使得同样的构建步骤可以创建不同的表示形式。 常见场景复现代码时确保 VS2022 使用 C17/20 标准以支持现代特性。 分步骤构造复杂对象实现灵活装配 1. 模式定义与用途 核心目标将复杂对象的构建过程分离使得同样的构建步骤可以创建不同的表示形式。 常见场景 创建包含多个组件的复杂对象如游戏角色、文档格式需要逐步构造对象并支持不同配置选项避免构造函数参数爆炸尤其是可选参数众多时 2. 模式结构解析 Builder定义构造步骤的抽象接口如 buildHead(), buildBody()ConcreteBuilder实现具体构造逻辑提供获取结果的接口Director控制构造流程可选可让客户端直接操作BuilderProduct最终构造的复杂对象 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_ptrGameCharacter getResult() 0; };// 具体建造者骑士 class KnightBuilder : public CharacterBuilder { public:KnightBuilder() { character_ std::make_uniqueGameCharacter(); }void buildHead() override { character_-setHead(Steel Helmet); }void buildBody() override { character_-setBody(Plate Armor); }void buildWeapon() override { character_-setWeapon(Longsword); }std::unique_ptrGameCharacter getResult() override { return std::move(character_); }private:std::unique_ptrGameCharacter character_; };// 具体建造者法师 class MageBuilder : public CharacterBuilder { public:MageBuilder() { character_ std::make_uniqueGameCharacter(); }void buildHead() override { character_-setHead(Pointed Hat); }void buildBody() override { character_-setBody(Robe); }void buildWeapon() override { character_-setWeapon(Staff); }std::unique_ptrGameCharacter getResult() override { return std::move(character_); }private:std::unique_ptrGameCharacter character_; };// 指挥者可选 class CharacterDirector { public:std::unique_ptrGameCharacter 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_ptrGameCharacter build() {auto character std::make_uniqueGameCharacter();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::mapstd::string, std::string headers_;std::string body_; };class HttpRequestBuilder { public:HttpRequestBuilder() : request_(std::make_uniqueHttpRequest()) {}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_ptrHttpRequest build() {return std::move(request_);}private:std::unique_ptrHttpRequest 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://www.w-s-a.com/news/660086/

相关文章:

  • 怎么让公司建设网站固安县建设局网站
  • 360免费建站官网入口手机网站建设设计
  • 商城网站建站系统dw如何做网页
  • 网站建设的公司收费我有网站 怎么做淘宝推广的
  • 网站建设策划书事物选题手机兼职app
  • html5 微网站模版wordpress博客速度很慢
  • 怎么做五个页面网站网络推广如何收费
  • 上虞宇普电器网站建设江西建筑人才网
  • 在吗做网站商城一个网站需要服务器吗
  • 先做网站再备案吗中山微网站建设报价
  • 树莓派可以做网站的服务器吗网站建设与设计ppt
  • 网站访问速度分析网站怎么做让PC和手机自动识别
  • 网站建设要考西宁网站建设多少钱
  • 网站开发公司东莞网站推广计划书具体包含哪些基本内容?
  • 素材天下网站惠州网站建设行业
  • 网站做a视频在线观看网站天津建站
  • 自己做的网站怎么链接火车头采集一个网站可以做几级链接
  • 济南网站制作哪家专业做网站怎样投放广告
  • 辽宁网站推广短视频运营培训学费多少
  • 拼多多网站怎么做翻译 插件 wordpress
  • 做网站运营的职业生涯规划wordpress分类显示图片
  • 网站建设与制作总结沈阳百度广告
  • 网站管理系统 手机会员制网站搭建wordpress
  • 做物品租赁网站清新wordpress主题
  • 优秀专题网站家居企业网站建设市场
  • 中山市有什么网站推广wordpress轻应用主机
  • 洗头竖鞋带名片改良授权做网站不贵整个世界
  • 设计电子商务网站建设方案微信如何开发自己的小程序
  • 建设网站公司哪里好相关的热搜问题解决方案做网站要看什么书
  • 网站建设重要性黄岐建网站