cpp: Builder Pattern
// Gold.h : 此文件包含 "Gold" 类。 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GOLD_H
#define GOLD_H
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
///
/// </summary>
class Gold
{
private:
public:
/// <summary>
/// 做父类时析构函数应该为虚函数
/// </summary>
virtual ~Gold() {}
/*
/// <summary>
/// 参数:模型编号,形如“1253679201245”等,每些位的组合都有一些特别的含义,这里无需深究
/// </summary>
/// <param name="strmodelno"></param>
void Assemble(string strmodelno)
{
LoadOperationModel(strmodelno.substr(4, 3));
LoadIntellectualModel(strmodelno.substr(7, 3));
LoadResourceModel(strmodelno.substr(10, 3));
}
/// <summary>
/// 运营管理 operation
/// </summary>
/// <param name="strno"></param>
virtual void LoadOperationModel(string strno) = 0; //这里也可以写为空函数体,子类决定是否重新实现
/// <summary>
/// 智能技术 intellectual technology
/// </summary>
/// <param name="strno"></param>
virtual void LoadIntellectualModel(string strno) = 0;
/// <summary>
/// 资源配置 (整合)resource allocation
/// </summary>
/// <param name="strno"></param>
virtual void LoadResourceModel(string strno) = 0;*/
};
}
#endif
// GoldCommerce.h : 此文件包含 "GoldCommerce" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GOLDCOMMERCE_H
#define GOLDCOMMERCE_H
#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
/// 商贸商会
/// </summary>
class GoldCommerce :public Gold
{
/**/
public:
/// <summary>
/// 运营管理 operation
/// </summary>
/// <param name="strno"></param>
virtual void LoadOperationModel(string strno)
{
cout << "商贸商会载入运营管理,最佳运营模式,需要调用GoldCommerce类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
}
/// <summary>
/// 智能技术 intellectual technology
/// </summary>
/// <param name="strno"></param>
virtual void LoadIntellectualModel(string strno)
{
cout << "商贸商会载入智能技术管理,需要调用GoldCommerce类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
}
/// <summary>
/// 资源配置 (整合)resource allocation
/// </summary>
/// <param name="strno"></param>
virtual void LoadResourceModel(string strno)
{
cout << "商贸商会载入公司人力,资本,信息,技术,物流等资源的最佳配置(整合),需要调用GoldCommerce类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
}
};
}
#endif
// GoldCorporation.h : 此文件包含 "GoldCorporation" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GOLDCORPORATION_H
#define GOLDCORPORATION_H
#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
/// 黄金公司
/// </summary>
class GoldCorporation :public Gold
{
/*
public:
/// <summary>
/// 运营管理 operation
/// </summary>
/// <param name="strno"></param>
virtual void LoadOperationModel(string strno)
{
cout << "黄金公司载入运营管理,最佳运营模式,需要调用GoldCorporation类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
}
/// <summary>
/// 智能技术 intellectual technology
/// </summary>
/// <param name="strno"></param>
virtual void LoadIntellectualModel(string strno)
{
cout << "黄金公司载入智能技术管理,需要调用GoldCorporation类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
}
/// <summary>
/// 资源配置 (整合)resource allocation
/// </summary>
/// <param name="strno"></param>
virtual void LoadResourceModel(string strno)
{
cout << "黄金公司载入公司人力,资本,信息,技术,物流等资源的最佳配置(整合),需要调用GoldCorporation类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
}
*/
};
}
#endif
// GoldShop.h : 此文件包含 "GoldShop" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GOLDSHOP_H
#define GOLDSHOP_H
#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
/// 连锁店舖
/// </summary>
class GoldShop :public Gold
{
/*
public:
/// <summary>
/// 运营管理 operation
/// </summary>
/// <param name="strno"></param>
virtual void LoadOperationModel(string strno)
{
cout << "连锁店舖载入运营管理,最佳运营模式,需要调用GoldShop类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
}
/// <summary>
/// 智能技术 intellectual technology
/// </summary>
/// <param name="strno"></param>
virtual void LoadIntellectualModel(string strno)
{
cout << "连锁店舖载入智能技术管理,需要调用GoldShop类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
}
/// <summary>
/// 资源配置 (整合)resource allocation
/// </summary>
/// <param name="strno"></param>
virtual void LoadResourceModel(string strno)
{
cout << "连锁店舖载入公司人力,资本,信息,技术,物流等资源的最佳配置(整合),需要调用GoldShop类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
}
*/
};
}
#endif
// GoldBuilder.h : 此文件包含 "GoldBuilder" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GOLDBUILDER_H
#define GOLDBUILDER_H
#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
/// 构建器父类
/// </summary>
class GoldBuilder
{
private:
public:
/// <summary>
///
/// </summary>
/// <param name="strmodelno"></param>
//void Assemble(string strmodelno) //参数:模型编号,形如“333333333333”等,每些位的组合都有一些特别的含义,这里无需深究
//{
// LoadOperationModel(strmodelno.substr(4, 3));
// LoadIntellectualModel(strmodelno.substr(7, 3));
// LoadResourceModel(strmodelno.substr(10, 3));
//}
//返回指向Gold类的成员变量指针m_pGold,当一个复杂的对象构建完成后,可以通过该成员函数把对象返回
/// <summary>
/// 返回指向Gold类的成员变量指针m_pGold,当一个复杂的对象构建完成后,可以通过该成员函数把对象返回
/// </summary>
/// <returns></returns>
Gold* GetResult()
{
return m_pGold;
}
/// <summary>
/// 运营管理 operation
/// </summary>
/// <param name="strno"></param>
virtual void LoadOperationModel(string strno) = 0;//这里也可以写为空函数体,子类决定是否重新实现
/// <summary>
/// 智能技术 intellectual technology
/// </summary>
/// <param name="strno"></param>
virtual void LoadIntellectualModel(string strno) = 0;
/// <summary>
/// 资源配置 (整合)resource allocation
/// </summary>
/// <param name="strno"></param>
virtual void LoadResourceModel(string strno) = 0;
/// <summary>
/// 做父类时析构函数应该为虚函数
/// </summary>
virtual ~GoldBuilder() {}
protected:
Gold* m_pGold; //指向Gold类的成员变量指针
};
}
#endif
// GoldBuilder.h : 此文件包含 "GoldBuilder" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GOLDCOMMERCEBUILDER_H
#define GOLDCOMMERCEBUILDER_H
#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
#include "GoldBuilder.h"
#include "GoldCommerce.h"
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
/// 商贸商会构建器类
/// </summary>
class GoldCommerceBuilder :public GoldBuilder
{
public:
GoldCommerceBuilder() //构造函数
{
m_pGold = new GoldCommerce();
}
/// <summary>
/// 运营管理 operation
/// </summary>
/// <param name="strno"></param>
virtual void LoadOperationModel(string strno)
{
cout << "商贸商会载入运营管理,最佳运营模式,需要调用GoldCommerce类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
//m_pGold->......略
}
/// <summary>
/// 智能技术 intellectual technology
/// </summary>
/// <param name="strno"></param>
virtual void LoadIntellectualModel(string strno)
{
cout << "商贸商会载入智能技术管理,需要调用GoldCommerce类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
//m_pGold->......略
}
/// <summary>
/// 资源配置 (整合)resource allocation
/// </summary>
/// <param name="strno"></param>
virtual void LoadResourceModel(string strno)
{
cout << "商贸商会载入公司人力,资本,信息,技术,物流等资源的最佳配置(整合),需要调用GoldCommerce类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
//m_pGold->......略
}
};
}
#endif
// GoldBuilder.h : 此文件包含 "GoldBuilder" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GOLDCORPORATIONBUILDER_H
#define GOLDCORPORATIONBUILDER_H
#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
#include "GoldCorporation.h"
#include "GoldBuilder.h"
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
/// 黄金公司构建器类
/// </summary>
class GoldCorporationBuilder:public GoldBuilder
{
private:
public:
/// <summary>
/// 构造函数
/// </summary>
GoldCorporationBuilder() //
{
m_pGold = new GoldCorporation();
}
/// <summary>
/// 运营管理 operation
/// </summary>
/// <param name="strno"></param>
virtual void LoadOperationModel(string strno)
{
cout << "黄金公司载入运营管理,最佳运营模式,需要调用GoldCorporation类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
//m_pGold->......略
}
/// <summary>
/// 智能技术 intellectual technology
/// </summary>
/// <param name="strno"></param>
virtual void LoadIntellectualModel(string strno)
{
cout << "黄金公司载入智能技术管理,需要调用GoldCorporation类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
//m_pGold->......略
}
/// <summary>
/// 资源配置 (整合)resource allocation
/// </summary>
/// <param name="strno"></param>
virtual void LoadResourceModel(string strno)
{
cout << "黄金公司载入公司人力,资本,信息,技术,物流等资源的最佳配置(整合),需要调用GoldCorporation类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
//m_pGold->......略
}
};
}
#endif
// GoldBuilder.h : 此文件包含 "GoldBuilder" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GOLDSHOPBUILDER_H
#define GOLDSHOPBUILDER_H
#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
#include "GoldBuilder.h"
#include "GoldShop.h"
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
/// 连锁店舖构建器类
/// </summary>
class GoldShopBuilder :public GoldBuilder
{
public:
/// <summary>
/// 构造函数
/// </summary>
GoldShopBuilder() //
{
m_pGold = new GoldShop();
}
/// <summary>
/// 运营管理 operation
/// </summary>
/// <param name="strno"></param>
virtual void LoadOperationModel(string strno)
{
cout << "连锁店舖载入运营管理,最佳运营模式,需要调用GoldShop类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
//m_pGold->......略
}
/// <summary>
/// 智能技术 intellectual technology
/// </summary>
/// <param name="strno"></param>
virtual void LoadIntellectualModel(string strno)
{
cout << "连锁店舖载入智能技术管理,需要调用GoldShop类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
//m_pGold->......略
}
/// <summary>
/// 资源配置 (整合)resource allocation
/// </summary>
/// <param name="strno"></param>
virtual void LoadResourceModel(string strno)
{
cout << "连锁店舖载入公司人力,资本,信息,技术,物流等资源的最佳配置(整合),需要调用GoldShop类或其父类中其他诸多成员函数,逻辑代码略......" << endl;
//m_pGold->......略
}
};
}
#endif
// GoldBuilder.h : 此文件包含 "GoldBuilder" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GOLDDIRECTOR_H
#define GOLDDIRECTOR_H
#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
#include "GoldBuilder.h"
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
/// CEO 指挥者类
/// </summary>
class GoldDirector
{
public:
/// <summary>
/// 构造函数
/// </summary>
/// <param name="ptmpBuilder"></param>
GoldDirector(GoldBuilder* ptmpBuilder)
{
m_pGoldBuilder = ptmpBuilder;
}
/// <summary>
/// 指定新的构建器
/// </summary>
/// <param name="ptmpBuilder"></param>
void SetBuilder(GoldBuilder* ptmpBuilder)
{
m_pGoldBuilder = ptmpBuilder;
}
/// <summary>
/// 原GoldBuilder类中的Assemble成员函数
/// </summary>
/// <param name="strmodelno"></param>
/// <returns></returns>
Gold* Construct(string strmodelno) //参数:模型编号,形如“1253679201245”等,每些位的组合都有一些特别的含义,这里无需深究
{
m_pGoldBuilder->LoadOperationModel(strmodelno.substr(4, 3));
m_pGoldBuilder->LoadIntellectualModel(strmodelno.substr(7, 3));
m_pGoldBuilder->LoadResourceModel(strmodelno.substr(10, 3));
return m_pGoldBuilder->GetResult(); //返回构建后的对象
}
private:
GoldBuilder* m_pGoldBuilder; //指向所有构建器类的父类
};
}
#endif
// GoldBuilder.h : 此文件包含 "GoldBuilder" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#pragma once
#ifndef GEOVINDU_H
#define GEOVINDU_H
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
///
/// </summary>
class GeovinDu
{
private:
public:
/// <summary>
///
/// </summary>
void displayBuilder();
};
}
#endif
// GeovinDu.cpp : 此文件包含 "GeovinDu" 类。原型模式 Builder Pattern C++ 14
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
#include "GeovinDu.h"
#include "Gold.h"
#include "GoldBuilder.h"
#include "GoldCorporation.h"
#include "GoldDirector.h"
#include "GoldShop.h"
#include "GoldCommerce.h"
#include "GoldCommerceBuilder.h"
#include "GoldCorporationBuilder.h"
#include "GoldShopBuilder.h"
#include "GoldDirector.h"
using namespace std;
namespace DuJewelryBuilderPattern
{
/// <summary>
///
/// </summary>
void GeovinDu::displayBuilder()
{
/*
DuJewelryBuilderPattern::Gold* pmonster = new DuJewelryBuilderPattern::GoldCommerce(); //创建
pmonster->Assemble("1253679201245");
//释放资源
delete pmonster;
*/
//DuJewelryBuilderPattern::GoldBuilder* pGoldBuilder = new GoldShopBuilder();
GoldBuilder* pGoldBuilder =new DuJewelryBuilderPattern::GoldCorporationBuilder(); //创建构建器类对象
DuJewelryBuilderPattern::GoldDirector* pDirector = new DuJewelryBuilderPattern::GoldDirector(pGoldBuilder);
DuJewelryBuilderPattern::Gold* pGold = pDirector->Construct("33333333333333333");//这里就构造出了一个对象
//释放资源
delete pGold;
delete pDirector;
delete pGoldBuilder;
}
}
调用:
// ConsoleDuBuilderPattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// Jewelry Builder Pattern 生成器模式 建造者模式、Builder
// // 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit.
//
#define _UNICODE
#include <iostream>
#include "GeovinDu.h"
#ifdef _DEBUG //只在Debug(调试)模式下
#ifndef DEBUG_NEW
#define DEBUG_NEW new(_NORMAL_BLOCK,__FILE__,__LINE__) //重新定义new运算符
#define new DEBUG_NEW
#endif
#endif
//#include <boost/type_index.hpp>
using namespace std;
//#pragma warning(disable : 4996)
using namespace DuJewelryBuilderPattern;
int main()
{
std::cout << "Hello World!!Programa Olá Mundo!涂聚文 Geovin Du\n";
GeovinDu geovindu;
geovindu.displayBuilder();
system("pause");
return 0;
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
#define UNICODE
输出:
Hello World!!Programa Olá Mundo!涂聚文 Geovin Du 黄金公司载入运营管理,最佳运营模式,需要调用GoldCorporation类或其父类中其他诸多成员函数,逻辑代码略...... 黄金公司载入智能技术管理,需要调用GoldCorporation类或其父类中其他诸多成员函数,逻辑代码略...... 黄金公司载入公司人力,资本,信息,技术,物流等资源的最佳配置(整合),需要调用GoldCorporation类或其父类中其他诸多成员函 数,逻辑代码略...... 请按任意键继续. . .

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号