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

电影网站制作模版廊坊企业自助建站

电影网站制作模版,廊坊企业自助建站,大型网站技术架构,竞价推广代运营目的生成器模式又称建造者模式是一种创建型设计模式, 能够分步骤创建复杂对象。 该模式允许使用相同的创建代码生成不同类型和形式的对象。生成器模式所构建的对象一定是庞大而复杂的对象,类似与建造房屋:按照既定工序进行建造。区别于工厂模…

目的

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

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

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

实现方式

  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/494111.html

相关文章:

  • 网站开发建设费用node框架做网站
  • 网站建设手机端是什么意思做汽车商城网站
  • 计算机系毕设代做网站吴江区建设局网站
  • 罗庄建设局网站重庆市建设工程信息网查证件
  • 北京网站设计工作室北京火车站建站时间
  • 检察门户网站 建设意义国内贸易平台
  • 在线免费域名网站解析免费行情网站大全
  • 审计网站建设毕业设计年终总结汇报ppt模板
  • 想接做网站的单子企业网站建设公司电话西安
  • 中山专业外贸网站建设中国建筑集团有限公司官网校园招聘
  • 红色 网站深圳网站建设antnw
  • 龙华学校网站建设对网站建设提建议
  • 电子商务网站运营方案平面设计logo创意图片
  • 上海装修公司十大排名桂平seo关键词优化
  • 福州做网站多少钱建筑工程公司名字
  • 国内高清视频素材网站注册网站需要多久
  • 温州建网站哪家强涉及部署未备案网站
  • 网站建设需要云主机吗wordpress 4.2.2
  • 网站备案证书如何打开如何免费申请域名和网址
  • 网站网速慢程序员培训学校
  • 专业建设网站公司哪家好设计官网论坛
  • 个人网站也要备案吗高端网站建设1
  • 阿里云建网站教程那些做黑网站的都是团体还是个人
  • wordpress做定制T恤的网站自己做的手机网站怎么加入小程序
  • 快速网站建设公司ktv网站建设方案
  • 怎样做自己的的社交网站定制建站
  • 网站制作的收费标准wordpress切换作者
  • 南京高端网站制作公司wordpress 外教 缩略图
  • 做网站网站会被判多久食品品牌网站策划
  • 彩票网站维护会跑路吗电子商务网站建设书