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

网站建设外包网青岛建站开发

网站建设外包网,青岛建站开发,什么是虚拟主机,建设内部网站一、建造者模式简介 建造者模式#xff08;Builder Pattern#xff09;又被称为生成器模式。它旨在构建一个复杂对象的各个部分#xff0c;而不需要指定该对象的具体类。该模式特别适用于对象的构建过程复杂且需要多个步骤的情况。建造者模式是一种对象创建型模式之一…一、建造者模式简介 建造者模式Builder Pattern又被称为生成器模式。它旨在构建一个复杂对象的各个部分而不需要指定该对象的具体类。该模式特别适用于对象的构建过程复杂且需要多个步骤的情况。建造者模式是一种对象创建型模式之一用来隐藏复合对象的创建过程它把复合对象的创建过程加以抽象通过子类继承和重载的方式动态地创建具有复合属性的对象。 建造者模式适用于当一个对象的构建比较复杂将一个对象的构建(?)和对象的表示(?)进行分离的情况 分离构建和表示 建造者模式通过将复杂对象的构建过程与其表示分离开来允许构建过程的变化不会影响到最终对象的表示。也就是说构建者模式关注的是如何一步一步地构建一个对象而不是最终对象是什么样的。 逐步构建 该模式允许通过多个步骤方法来逐步构建对象这些步骤可以是可选的或者是必需的。构建的顺序和内容可以被灵活控制。 GoF一书中对建造者模式的介绍 二、建造者模式的用处 1. 复杂对象的构建 当一个对象的构建过程包含多个步骤或组件时建造者模式可以帮助将这些步骤分开从而使构建过程更加清晰和易于管理。例如构建一个具有多种配置选项的复杂数据结构或图形用户界面GUI组件。 2. 构建过程的灵活性 建造者模式允许灵活地定制对象的创建过程而无需修改对象的具体实现。例如不同的建造者可以用于创建具有不同配置或特性的对象而指挥者Director负责控制构建的步骤和顺序。 3. 解耦构建和表示 将对象的构建过程与表示分离使得构建的过程和最终的对象类型可以独立变化。这种解耦使得系统更加灵活易于扩展和维护。例如你可以在不修改对象创建逻辑的情况下添加新的产品类型或更改产品的外观。 4. 支持逐步构建 对于需要逐步构建的对象建造者模式可以逐步执行构建步骤。这样可以在构建过程中控制每个步骤的执行并允许有选择地构建对象。例如在构建复杂的报告或文档时你可以按章节、段落等逐步添加内容。 5. 提高代码可读性和可维护性 通过将构建过程分解成多个清晰的步骤建造者模式使得代码更加易读和易于维护。每个建造者只负责对象的一个方面的构建使得构建过程更加模块化。 6. 支持复杂的构建逻辑 当对象的构建逻辑非常复杂需要处理多种条件或选项时建造者模式可以封装这些复杂的逻辑。这样可以将构建逻辑集中在建造者类中而客户端代码只需知道如何使用指挥者来创建对象 三、建造者模式的设计方法 builder.cpp #include iostream #include string #include memory// 产品 class House { public:void setDoor(const std::string door) {this-door door;}void setWall(const std::string wall) {this-wall wall;}void setWindow(const std::string window) {this-window window;}void setFloor(const std::string floor) {this-floor floor;}const std::string getDoor() const {return this-door;}const std::string getWall() const {return this-wall;}const std::string getWindow() const {return this-window;}const std::string getFloor() const {return this-floor;}protected:std::string door;std::string wall;std::string window;std::string floor; };// 工程队 class Builder { public:virtual ~Builder() {}virtual void buildWall() 0;virtual void buildDoor() 0;virtual void buildWindow() 0;virtual void buildFloor() 0;virtual std::shared_ptrHouse getHouse() 0;virtual void viewHouse() const 0; // 标记为 const };class VillaBuilder : public Builder { public:VillaBuilder() : house(std::make_sharedHouse()) {}void buildWall() override {house-setWall(别墅墙);}void buildDoor() override {house-setDoor(别墅门);}void buildWindow() override {house-setWindow(别墅窗户);}void buildFloor() override {house-setFloor(别墅地板);}std::shared_ptrHouse getHouse() override {return house;}void viewHouse() const override {std::cout 这是一座好别墅有 house-getWall() , 有 house-getWindow() , 有 house-getDoor() , 有 house-getFloor() ! std::endl;}private:std::shared_ptrHouse house; };class FlatBuilder : public Builder { public:FlatBuilder() : house(std::make_sharedHouse()) {}void buildWall() override {house-setWall(公寓墙);}void buildDoor() override {house-setDoor(公寓门);}void buildWindow() override {house-setWindow(公寓窗户);}void buildFloor() override {house-setFloor(公寓地板);}std::shared_ptrHouse getHouse() override {return house;}void viewHouse() const override {std::cout 这是一座好公寓有 house-getWall() , 有 house-getWindow() , 有 house-getDoor() , 有 house-getFloor() ! std::endl;}private:std::shared_ptrHouse house; };// 设计师 class Director { public:Director(std::shared_ptrBuilder builder) : builder(builder) {}void constructHouse() {builder-buildWall(); // 先建墙builder-buildWindow(); // 然后建窗户builder-buildDoor(); // 再建门builder-buildFloor(); // 最后建地板}void viewHouse() const {builder-viewHouse();}private:std::shared_ptrBuilder builder; };// 设计师请工程队按照图纸建造好房子客户端 void doWorking() {// 请一个建造别墅的工程队std::shared_ptrBuilder builder std::make_sharedVillaBuilder();Director director(builder);director.constructHouse();director.viewHouse();// 请一个建造公寓的工程队builder std::make_sharedFlatBuilder();Director anotherDirector(builder);anotherDirector.constructHouse();anotherDirector.viewHouse(); }int main() {// 开工doWorking();return 0; } 运行效果 产品Product 产品是最终构建出来的复杂对象它包含多个组成部分和属性。产品类通常有多个子类具体实现可以因业务需求而异。 建造者Builder 建造者接口定义了构建产品的各个部分的方法。每个具体的建造者实现这些方法按照特定的步骤来构建产品。 具体建造者ConcreteBuilder 具体建造者实现了建造者接口负责具体的构建步骤。这些步骤包括创建产品的不同部分并在最后将产品返回。 指挥者Director 指挥者类负责按照特定的顺序调用建造者的方法来构建产品。它将建造者的具体实现与构建过程分开使得构建过程与产品的具体类型解耦。 客户端Client 客户端负责使用指挥者和建造者来构建产品。客户端通常不需要知道产品的具体构建过程或其组成部分。 四、总结 建造者模式模仿建筑行业的建造行为设计师设计好图纸交给工程队工程队根据图纸建造房子房子建造好之后交给客户。设计的代码中将构造设计师的图纸和表示工程队造的房子完美分离这样可以把复杂的部分简单化最后有机地组合在一起最终形成我们想要的产品。
http://www.hkea.cn/news/14493152/

相关文章:

  • 皮具网站建设网线制作实验总结
  • 网页设计类网站小米路由wordpress
  • 品牌建设更加百度seo公司电话
  • 软件下载的网站大理公司网站建设
  • 买CAD设计图做的网站推一把网络营销学院
  • 类似聚划算的网站怎么建设百度集团
  • 网站上推广游戏怎么做网站建设资金筹措的方案
  • 润滑油网站怎样做效果更好网站建设佰金手指科捷一
  • 汕头网站制作哪里好浙江网站建设哪家最好
  • 网站建设工作计划艺术字体在线生成器毛笔字
  • 宿州网站建设价格如何查询网站被百度收录
  • 自己可以建设网站卖东西吗诸暨广川建设公司网站
  • 电商加盟的网站建设政务网站建设具体指导意见
  • 用vps刷网站流量要怎么做网站优化要做哪些工作
  • 怎样优化网站自然排名html黑什么主题WordPress
  • 常德 网站建设微商城官网地址
  • 网站域名费用怎么做分录网站所有人
  • php网站是什么各类网站规划
  • 怎么看一个网站什么程序做的html论坛模板
  • 番茄todo社区视频免费看医院网站怎么做优化排名
  • wordpress 仿站vip网站制作企业有哪些公司
  • 怎么免费建立自己网站深圳市营销策划有限公司
  • 移动健康app下载wordpress分类seo标题
  • 电商设计网站哪个好人力资源外包平台
  • 网站的优化从哪里进行wordpress系统怎样下载
  • 建个电子商务网站多少钱来凤县住房和城乡建设厅网站
  • 龙泉市建设局门户网站怎么做优惠卷网站
  • 制作手机网站用什么软件泉州营销型网站设计
  • 域名解析网站建设沈阳建设局网站首页
  • 视频点播网站开发教程seo服务器选择