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

专业做网站建情感导师在线咨询服务

专业做网站建,情感导师在线咨询服务,硬之城电子元器件商城,百度推广投诉人工电话目录 C设计模式-生成器(Builder) 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-生成器(Builder) 一、意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 二、…

目录

C++设计模式-生成器(Builder)

一、意图

二、适用性

三、结构

四、参与者

五、代码


C++设计模式-生成器(Builder)

一、意图

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

二、适用性

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。

三、结构

 

四、参与者

  • Builder

       为创建一个Product对象的各个部件指定抽象接口。

  • ConcreteBuilder

        实现Builder的接口以构造和装配该产品的各个部分。

        定义并明确它所创建的表示。

        提供一个检索产品的接口。

  • Director

        构造一个使用Builder接口的对象

  • Product

        表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。

        包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

五、代码

#include<iostream>
using namespace std;class Product {
public:void SetPartOne(string TempPartOne) {PartOne = TempPartOne;cout << "Set Part One: " << PartOne << endl;}void SetPartTwo(string TempPartTwo) {PartTwo = TempPartTwo;cout << "Set Part Two: " << PartTwo << endl;}void SetPartThree(string TempPartThree) {PartThree = TempPartThree;cout << "Set Part Three: " << PartThree << endl;}
private:string PartOne;string PartTwo;string PartThree;
};class Builder {
public:Product GetProduct() {return product;}virtual void BuildPartOne() = 0;virtual void BuildPartTwo() = 0;virtual void BuildPartThree() = 0;
protected:Product product;
};class ProductOneBuilder : public Builder {
public:void BuildPartOne() {product.SetPartOne("Product One's Part One");}void BuildPartTwo() {product.SetPartTwo("Product One's Part Two");}void BuildPartThree() {product.SetPartThree("Product One's Part Three");}
};class ProductTwoBuilder : public Builder {
public:void BuildPartOne() {product.SetPartOne("Product Two's Part One");}void BuildPartTwo() {product.SetPartTwo("Product Two's Part Two");}void BuildPartThree() {product.SetPartThree("Product Two's Part Three");}
};class Director {
public:Director() :builder(nullptr) {}void SetBuilder(Builder* TempBuilder) {this->builder = TempBuilder;}Product ConstructProduct() {builder->BuildPartOne();builder->BuildPartTwo();builder->BuildPartThree();return builder->GetProduct();}
private:Builder* builder;
};int main() {Builder* builder;Director* director = new Director;Product product;cout << "*** *** Construct Product One *** ***" << endl;builder = new ProductOneBuilder;director->SetBuilder(builder);product = director->ConstructProduct();delete builder;cout << "*** *** Construct Product Two *** ***" << endl;builder = new ProductTwoBuilder;director->SetBuilder(builder);product = director->ConstructProduct();delete builder;delete director;return 0;
}

http://www.yayakq.cn/news/850027/

相关文章:

  • 专门卖电子产品的网站做经营性的网站备案条件
  • 网站建设规划书实训报告路桥建设局网站
  • 做淘宝客网站需要什么要求网站整合discuz论坛
  • 巴中哪里可以做公司网站百度刷排名优化软件
  • 高唐做网站推广响应式网站建设视频教程
  • 泉州设计网站wordpress 拒绝访问
  • 网站每天1万ip能收入多少超级网站模板下载
  • 成功英语网站wordpress scripts gzip
  • 网站页面布局微信小程序游戏手游排行榜
  • 桂林网站优化注意事项asp网站发邮件
  • 二手书网站开发需求分析WordPress火车采集描述
  • php做教育网站企业品牌vi设计
  • 章丘做网站的公司苏州专业网站制作
  • 国内 设计网站的公司网站江苏省交通工程建设局网站
  • wordpress搭建小说站标志设计英文
  • 旅游网站手机模板线上ui设计培训哪个好
  • 个人域名可以做公司网站么跨境电商卖什么东西比较好
  • 深圳网站搭建价格博客网站开发利用数据库
  • 网站的二次开发广州沙河一起做网站
  • 在哪个网站上做外贸好wordpress添加轮播图
  • 哈尔滨模板网站建站吉林省软环境建设办公室网站
  • 网站建设的四个步骤用tp5做网站
  • 摄影网站图片做网站排名seo
  • 网站域名可以更改吗完全免费的网站源码
  • 施工方案下载免费网站电子商务的公司有哪些
  • 网站的内部推广的方法设计教育
  • 做网站代理能赚钱吗app网站开发哪家专业
  • 上海高端网站定制建设公司网站制作需要学多久
  • 网站平台怎么建立如何免费域名
  • 万维网站php企业网站开发实训报告