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

响应式企业网站 下载网站制作是不是要先用ps做

响应式企业网站 下载,网站制作是不是要先用ps做,智慧团建官网登录口手机版,在线ui设计平台目的生成器模式又称建造者模式是一种创建型设计模式, 能够分步骤创建复杂对象。 该模式允许使用相同的创建代码生成不同类型和形式的对象。生成器模式所构建的对象一定是庞大而复杂的对象,类似与建造房屋:按照既定工序进行建造。区别于工厂模…

目的

生成器模式又称建造者模式是一种创建型设计模式, 能够分步骤创建复杂对象。 该模式允许使用相同的创建代码生成不同类型和形式的对象。

生成器模式所构建的对象一定是庞大而复杂的对象,类似与建造房屋:按照既定工序进行建造。区别于工厂模式,生成器模式的目的是把繁琐的构建过程从不同对象抽离,使其脱离产品类或者工厂类,实现一套标准的制造工序能够产出不同产品的效果。

最后,可以进一步将用于创建产品的一系列生成器步骤调用抽取成为单独的主管类。 主管类可定义创建步骤的执行顺序, 而生成器则提供这些步骤的实现。

实现方式

  1. 构建过程拆分:清晰地定义通用步骤, 确保它们可以制造所有形式的产品。 

  2. 声明生成器接口:在基本生成器接口中声明这些步骤,即声明各方法。

  3. 定义生成器类:为每个形式的产品创建具体生成器类, 并实现其构造步骤。

  4. 考虑创建主管类。 它可以使用同一生成器对象来封装多种构造产品的方式。

  5. 客户端使用:客户端代码会同时创建生成器和主管对象。 构造开始前, 客户端必须将生成器对象传递给主管对象(类似注入)。 通常情况下, 客户端只需调用主管类构造函数一次即可。 主管类使用生成器对象完成后续所有制造任务。 还有另一种方式, 那就是客户端可以将生成器对象直接传递给主管类的制造方法。

  6. 只有在所有产品都遵循相同接口的情况下, 构造结果可以直接通过主管类获取。 否则, 客户端应当通过生成器获取构造结果。

代码实现如下:

#include <iostream>
#include <memory>
#include <string>// Product
class House {
public:std::string foundation;std::string structure;std::string roof;void show() const {std::cout << "Foundation: " << foundation << "\n"<< "Structure: " << structure << "\n"<< "Roof: " << roof << std::endl;}
};// abstract builder class-interface as c#
class HouseBuilder {
public:virtual ~HouseBuilder() = default;virtual void buildFoundation() = 0;virtual void buildStructure() = 0;virtual void buildRoof() = 0;virtual std::unique_ptr<House> getHouse() = 0;
};// concorete builder: wood house
class WoodHouseBuilder : public HouseBuilder {
private:std::unique_ptr<House> house;public:WoodHouseBuilder() : house(std::make_unique<House>()) {}void buildFoundation() override {house->foundation = "Wooden Piles";}void buildStructure() override {house->structure = "Wooden Walls";}void buildRoof() override {house->roof = "Wooden Shingles";}std::unique_ptr<House> getHouse() override {return std::move(house);}
};// concorete builder: stone house
class StoneHouseBuilder : public HouseBuilder {
private:std::unique_ptr<House> house;public:StoneHouseBuilder() : house(std::make_unique<House>()) {}void buildFoundation() override {house->foundation = "Concrete Base";}void buildStructure() override {house->structure = "Stone Walls";}void buildRoof() override {house->roof = "Slate Tiles";}std::unique_ptr<House> getHouse() override {return std::move(house);}
};// director
class HouseDirector {
public:void construct(HouseBuilder& builder) {builder.buildFoundation();builder.buildStructure();builder.buildRoof();}
};// client
int main() {HouseDirector director;WoodHouseBuilder woodBuilder;director.construct(woodBuilder);std::unique_ptr<House> woodHouse = woodBuilder.getHouse();std::cout << "Wood House:\n";woodHouse->show();StoneHouseBuilder stoneBuilder;director.construct(stoneBuilder);std::unique_ptr<House> stoneHouse = stoneBuilder.getHouse();std::cout << "\nStone House:\n";stoneHouse->show();return 0;
}

http://www.dtcms.com/a/520264.html

相关文章:

  • 购买网站建设需要注意app软件开发制作公司电话
  • 【AI Agent】入门、学习、求职
  • C++中const与引用深度解析:从使用到底层原理
  • Product Hunt 每日热榜 | 2025-10-23
  • 【大话码游之 Observation 传说】上集:月光宝盒里的计数玄机
  • raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600)---惜分飞
  • 2025年中专机电一体化专业做什么工作?
  • JavaWeb 全栈学习路径:从工具到项目的实战蜕变指南
  • 中国工信备案查询网站做网站的软件电子
  • tailwindcss暗色主题切换
  • Classwork 5 - Check the HTML Tags
  • 15、【Ubuntu】【VSCode】VSCode 断联问题分析:UID 补充
  • 本地网站404错误德州网站怎样建设
  • 从被动防御到主动防护:雷池WAF+cpolar的安全实践
  • 网络营销咨询网站源码多平台网页制作
  • 广州在建火车站在哪里国内最好的危机公关公司
  • mysql锁整理
  • linux下java程序使用jprofiler进行压测
  • R语言随机森林分析显示R方和P值
  • 《Python爬虫 + 飞书自动化上传》全流程详细讲解
  • ELK——logstash
  • 图像进行拼接-后进行ocr检测识别
  • 登封网站设计wordpress终极简码
  • 网站服务器关闭建设网站需要的安全设备
  • STM32 RS422异步UART通信测试全方案C++软件开发,嵌入式软件开发,Linux
  • Qt笔记:的初次使用Qt-Advanced-Docking-System
  • 基于PyTorch和CuPy的GPU并行化遗传算法实现
  • Apollo Canbus模块技术深度解析
  • DeepSeek-OCR 嵌入dify工作流
  • Linux小课堂: Vim与Emacs之Linux文本编辑器的双雄格局及Vim安装启动详解