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

网站空间邮箱每年要续费吗怎么备份网站数据库

网站空间邮箱每年要续费吗,怎么备份网站数据库,网站广告牌制作教程,用ssh做的网站解决的问题 生成器模式#xff08;Builder Pattern#xff09;主要解决复杂对象的构建问题。当一个对象的创建过程非常复杂#xff0c;涉及多个步骤和多个部件时#xff0c;使用生成器模式可以将对象的构建过程与其表示分离#xff0c;使得同样的构建过程可以创建不同的表…解决的问题 生成器模式Builder Pattern主要解决复杂对象的构建问题。当一个对象的创建过程非常复杂涉及多个步骤和多个部件时使用生成器模式可以将对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示。 适用场景 复杂对象的构建当对象的构建过程非常复杂涉及多个步骤和多个部件时。不同的构建过程当需要不同的表示时可以使用相同的构建过程。逐步构建当对象的构建过程可以逐步进行时。 模式的参与者角色 Builder生成器接口定义构建产品的各个部件的抽象接口。ConcreteBuilder具体生成器实现 Builder 接口负责构建产品的各个部件。Product产品表示正在构建的复杂对象。Director指导者使用 Builder 接口来构建产品。 以生产汽车为例的生成器模式示例代码 #include iostream #include string// 产品类汽车 class Car { public:void setBody(const std::string body) { body_ body; }void setEngine(const std::string engine) { engine_ engine; }void setWheels(const std::string wheels) { wheels_ wheels; }void setInterior(const std::string interior) { interior_ interior; }void show() const {std::cout Car Configuration: std::endl;std::cout Body: body_ std::endl;std::cout Engine: engine_ std::endl;std::cout Wheels: wheels_ std::endl;std::cout Interior: interior_ std::endl;}private:std::string body_;std::string engine_;std::string wheels_;std::string interior_; };// 抽象生成器接口 class CarBuilder { public:virtual ~CarBuilder() {}virtual void buildBody() 0;virtual void buildEngine() 0;virtual void buildWheels() 0;virtual void buildInterior() 0;virtual Car* getCar() 0; };// 具体生成器SUV 汽车 class SUVBuilder : public CarBuilder { public:SUVBuilder() { car_ new Car(); }~SUVBuilder() { delete car_; }void buildBody() override { car_-setBody(SUV Body); }void buildEngine() override { car_-setEngine(SUV Engine); }void buildWheels() override { car_-setWheels(SUV Wheels); }void buildInterior() override { car_-setInterior(SUV Interior); }Car* getCar() override { return car_; }private:Car* car_; };// 具体生成器Sedan 汽车 class SedanBuilder : public CarBuilder { public:SedanBuilder() { car_ new Car(); }~SedanBuilder() { delete car_; }void buildBody() override { car_-setBody(Sedan Body); }void buildEngine() override { car_-setEngine(Sedan Engine); }void buildWheels() override { car_-setWheels(Sedan Wheels); }void buildInterior() override { car_-setInterior(Sedan Interior); }Car* getCar() override { return car_; }private:Car* car_; };// 指导者 class Director { public:void setBuilder(CarBuilder* builder) { builder_ builder; }Car* constructCar() {builder_-buildBody();builder_-buildEngine();builder_-buildWheels();builder_-buildInterior();return builder_-getCar();}private:CarBuilder* builder_; };// 客户端代码 int main() {Director director;// 创建 SUVstd::cout Building SUV... std::endl;SUVBuilder suvBuilder;director.setBuilder(suvBuilder);Car* suv director.constructCar();suv-show();delete suv;// 创建 Sedanstd::cout \nBuilding Sedan... std::endl;SedanBuilder sedanBuilder;director.setBuilder(sedanBuilder);Car* sedan director.constructCar();sedan-show();delete sedan;return 0; }代码说明 Car 类表示正在构建的汽车产品包含汽车的各个部件。CarBuilder 是一个抽象生成器接口定义了构建汽车各个部件的方法和一个获取最终产品的接口。SUVBuilder 和 SedanBuilder 是具体生成器类分别实现了 CarBuilder 接口用于构建 SUV 和 Sedan 汽车。Director 类负责使用 CarBuilder 接口来构建汽车。它通过调用生成器的各个构建方法来逐步构建汽车。Client 在 main 函数中使用 Director 和具体生成器来构建不同类型的汽车并展示汽车配置。 总结 生成器模式通过将复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示。在需要逐步构建复杂对象或需要不同表示的场景中生成器模式非常有用。 模板方法Template Method模式与生成器Builder模式 形式相似点 抽象类与具体类两种模式都涉及抽象类或接口和具体实现类。分步构建都需要分步骤构建复杂对象或执行算法。 目的的不同点 模板方法模式定义一个算法的框架允许子类在不改变算法结构的情况下重新定义算法的某些步骤。目的是为了代码复用和算法的一致性。生成器模式将复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示。目的是为了构建复杂对象时的灵活性和可扩展性。 模板方法模式的代码示例 #include iostream #include string// 抽象类定义模板方法 class AbstractClass { public:// 模板方法void templateMethod() {step1();step2();step3();}protected:virtual void step1() 0;virtual void step2() 0;virtual void step3() 0; };// 具体类1 class ConcreteClass1 : public AbstractClass { protected:void step1() override {std::cout ConcreteClass1: Step 1 std::endl;}void step2() override {std::cout ConcreteClass1: Step 2 std::endl;}void step3() override {std::cout ConcreteClass1: Step 3 std::endl;} };// 具体类2 class ConcreteClass2 : public AbstractClass { protected:void step1() override {std::cout ConcreteClass2: Step 1 std::endl;}void step2() override {std::cout ConcreteClass2: Step 2 std::endl;}void step3() override {std::cout ConcreteClass2: Step 3 std::endl;} };// 客户端代码 int main() {AbstractClass* class1 new ConcreteClass1();class1-templateMethod();delete class1;std::cout std::endl;AbstractClass* class2 new ConcreteClass2();class2-templateMethod();delete class2;return 0; }生成器模式的代码示例 #include iostream #include string// 产品类 class Product { public:void setPartA(const std::string partA) { partA_ partA; }void setPartB(const std::string partB) { partB_ partB; }void setPartC(const std::string partC) { partC_ partC; }void show() const {std::cout Product parts: partA_ , partB_ , partC_ std::endl;}private:std::string partA_;std::string partB_;std::string partC_; };// 抽象生成器接口 class Builder { public:virtual ~Builder() {}virtual void buildPartA() 0;virtual void buildPartB() 0;virtual void buildPartC() 0;virtual Product* getProduct() 0; };// 具体生成器 class ConcreteBuilder : public Builder { public:ConcreteBuilder() { product_ new Product(); }~ConcreteBuilder() { delete product_; }void buildPartA() override { product_-setPartA(PartA); }void buildPartB() override { product_-setPartB(PartB); }void buildPartC() override { product_-setPartC(PartC); }Product* getProduct() override { return product_; }private:Product* product_; };// 指导者 class Director { public:void setBuilder(Builder* builder) { builder_ builder; }Product* constructProduct() {builder_-buildPartA();builder_-buildPartB();builder_-buildPartC();return builder_-getProduct();}private:Builder* builder_; };// 客户端代码 int main() {Director director;// 创建具体生成器ConcreteBuilder builder;director.setBuilder(builder);// 构建产品Product* product director.constructProduct();product-show();delete product;return 0; }代码说明 模板方法示例 AbstractClass定义了一个模板方法 templateMethod()其中包含了三个抽象步骤 step1(), step2(), step3()。ConcreteClass1 和 ConcreteClass2具体子类分别实现了抽象步骤但模板方法的结构保持不变。客户端代码通过创建 ConcreteClass1 和 ConcreteClass2 的对象调用 templateMethod() 方法来执行算法子类可以在不改变算法结构的情况下重新定义算法的某些步骤。 生成器模式示例 Product表示正在构建的复杂对象。Builder抽象生成器接口定义了构建产品的各个部件的方法和一个获取最终产品的接口。ConcreteBuilder具体生成器类实现了 Builder 接口负责构建产品的各个部件。Director指导者类使用 Builder 接口来构建产品。通过调用生成器的各个构建方法来逐步构建产品。客户端代码通过 Director 和 ConcreteBuilder 来构建产品并展示产品配置。 总结 模板方法模式目的是为了代码复用和算法的一致性通过定义算法的框架允许子类在不改变算法结构的情况下重新定义算法的某些步骤。生成器模式目的是为了构建复杂对象时的灵活性和可扩展性通过将复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示。
http://www.dnsts.com.cn/news/85523.html

相关文章:

  • 建设网站的方案张家港早晨网站制作
  • 手机pc网站共用数据库学校培训网站开发
  • 博物馆网站开发上海专业做网站公司
  • 触屏手机网站建设河北省网站建设公司
  • 区域销售网站什么做如何选择企业网站开发
  • 南通网站定制网络推广和网络营销的区别
  • 导航类网站怎么做重庆网站平台
  • 整站优化该怎么做网站建设运营的灵魂是什么
  • 图展网站源码游戏开发设计公司
  • 网站开发网络公司win2003 wordpress 安装
  • 为网站生成rss国家质量监督局官网
  • 怎么建网站做淘宝客上海自贸区注册公司在哪里
  • 网站设计上海自己电脑做电影网站
  • 设计手机网站内容模块哪个网站可以做视频播放器
  • 达孜网站建设在网上做游戏网站违法吗
  • 宝安公司免费网站建设建站公司做的网站侵权了
  • 网站你懂我意思正能量晚上在线观看不用下载免费魅族深圳做自适应网站
  • 树莓派用来做网站如何查名下是否有注册的公司
  • 山东站群网站建设建站系统做网站
  • 腾讯大浙网 网站开发品牌网站如何做
  • 陕西省高速建设集团网站良品铺子网站建设目标
  • 用织梦做的网站好用吗湖南建设资质申请网站
  • 外贸网站建设视频教程制作网站多少钱一个
  • 扬州建设网站公司网站建设全包
  • 网站开发按钮素材ps做图哪个网站好
  • 制作网站如何赚钱吃什么补肾壮阳
  • 中国建设规划采购网站muse做网站
  • 怎么给别人做网站网站c2c跨境电商平台有哪些
  • 网站翻书效果建设网站可以先买域名吗
  • 做网站得花多钱深圳好看的公司网站