cpp: Strategy Pattern

2023-11-07

// Gold.h : 此文件包含 "Gold" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 




#pragma once
//#ifndef GOLD_H 
//#define GOLD_H 
#ifndef _GOLD_ 
#define _GOLD_ 


#include <iostream>
#include <sstream>
#include <vector>
#include "StrategyProfile.h"

using namespace std;




namespace DuJewelryStrategyPattern
{

	增加策略
enum  ItemAddlife
{
	/// <summary>
	/// 黄金公司
	/// </summary>
	LF_Corporation,  
	/// <summary>
	/// 商贸商会
	/// </summary>
	LF_Commerce,  
	/// <summary>
	/// 店舖
	/// </summary>
	LF_Shop,  
};
/// <summary>
/// 
/// </summary>
enum ItemOperating
{
	/// <summary>
	/// 歇业
	/// </summary>
	colse,
	/// <summary>
	/// 营业
	/// </summary>
	bussines,

};

	class StrategyProfile;//类前向声明

	
	/// <summary>
	/// 黄金  父类 
	/// </summary>
	class Gold
	{
	public:

		/// <summary>
		/// 
		/// </summary>
		/// <param name="operation"></param>
		/// <param name="intellectual"></param>
		/// <param name="resource"></param>
		Gold(int operation, int intellectual, int resource) :Poperation(operation), Pintellectual(intellectual), Presource(resource) {}
		/// <summary>
		/// 
		/// </summary>
		virtual ~Gold() {}

		public:
			/// <summary>
			/// 
			/// </summary>
			/// <param name="djtype"></param>
			/// <param name="operate"></param>
			void UseItem(ItemAddlife djtype, ItemOperating operate) //
			{
				if (djtype == LF_Corporation) //类型:
				{
					int oldp = Poperation;
					int oldi = Pintellectual;
					int oldr = Presource;
					Poperation += 200; //补充200点 poisoning

					if (operate==colse)
					{
						//
						cout << "黄金公司歇业中,为了更好的准备迎接新的增长点!" << endl;
					}
					if (operate == bussines)  //musth
					{
						Poperation += 400; //再补充400点
						Pintellectual += 200; //也再补充200点

						cout << "黄金公司营业中,运营增长:("+to_string(oldp) +")"+to_string(Poperation - oldp)+",智能技术增长:(" + to_string(oldi) + ")" +to_string(Pintellectual - oldi)+",资源增长:(" + to_string(oldr) + ")" +to_string(Presource - oldr) << endl;
					}
				}
				else if (djtype == LF_Commerce ) //
				{
					int oldp = Poperation;
					int oldi = Pintellectual;
					int oldr = Presource;
					if (operate == colse)
					{
						cout << "商贸商会歇业中,为了更好的准备迎接新的增长点!" << endl;
					}
					if (operate == bussines)
					{
						Poperation += 300; //补充300点
						cout << "商贸商会营业中,运营增长:(" + to_string(oldp) + ")" + to_string(Poperation- oldp) + ",智能技术增长:(" + to_string(oldi) + ")" + to_string(Pintellectual-oldi) + ",资源增长:(" + to_string(oldr) + ")" + to_string(Presource-oldr) << endl;
					}
				}
				else if (djtype == LF_Shop) //
				{
					int oldp = Poperation;
					int oldi = Pintellectual;
					int oldr = Presource;

					if (operate == colse)
					{
						cout << "店舖歇业中,为了更好的准备迎接新的增长点!" << endl;
					}
					if (operate == bussines)
					{
						Poperation += 500; //补充500点
						cout << "店舖营业中,运营增长:(" + to_string(oldp) + ")" + to_string(Poperation- oldp) + ",智能技术增长:(" + to_string(oldi) + ")" + to_string(Pintellectual - oldi) + ",资源增长:(" + to_string(oldr) + ")" + to_string(Presource - oldr) << endl;
					}
				}
				//其他的一些判断逻辑,略......
			}

	public:

		/// <summary>
		/// 
		/// </summary>
		/// <param name="strategy"></param>
		void SetStrategyProfile(StrategyProfile* strategy); //设置道具使用的策略
		/// <summary>
		/// /
		/// </summary>
		void UseItem(); //
		/// <summary>
		/// 获取运营管理
		/// </summary>
		/// <returns></returns>
		int  GetOperation(); 
		/// <summary>
		/// 设置运营管理
		/// </summary>
		/// <param name="operation"></param>
		void SetOperation(int operation); //
		/// <summary>
		/// 获取智能技术
		/// </summary>
		/// <returns></returns>
		int  GetIntellectual();
		/// <summary>
		/// 设置智能技术
		/// </summary>
		/// <param name="operation"></param>
		void SetIntellectual(int intellectual); //

		/// <summary>
		/// 获取资源配置
		/// </summary>
		/// <returns></returns>
		int  GetResource();
		/// <summary>
		/// 设置资源配置
		/// </summary>
		/// <param name="operation"></param>
		void SetResource(int resource); //


	private:
		/// <summary>
		/// 
		/// </summary>
		StrategyProfile* strategyProfile = nullptr; //C++11中支持这样初始化


	protected:
		/// <summary>
		/// 运营管理 operation
		/// </summary>
		int Poperation;
		/// <summary>
		/// 智能技术 intellectual technology
		/// </summary>
		int Pintellectual;

		/// <summary>
		/// 资源配置 (整合)resource allocation
		/// </summary>
		int Presource;


	};


}

#endif


// Gold.cpp 此文件包含 "Gold" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 

#include <iostream>
#include "Gold.h"
#include "StrategyProfile.h"
using namespace std;




namespace DuJewelryStrategyPattern
{


	/// <summary>
	/// 设置组合使用的策略
	/// </summary>
	/// <param name="strategy"></param>
	void Gold::SetStrategyProfile(StrategyProfile* strategy)
	{
		strategyProfile = strategy;
	}

	//1例用法
	/// <summary>
	/// 使用组合策略
	/// </summary>
	void Gold::UseItem()
	{
		strategyProfile->UseItem(this); //this
		
	}

	/** 2 例用法
	/// <summary>
	/// 使用组合策略
	/// </summary>
		void Gold::UseItem()
		{
			strategyProfile->UseItem(); //this
		}
    */

	/// <summary>
	/// 获取运营管理
	/// </summary>
	/// <returns></returns>
	int Gold::GetOperation()
	{
		return Poperation;
	}
	/// <summary>
	/// 设置运营管理
	/// </summary>
	/// <param name="operation"></param>
	void Gold::SetOperation(int operation)
	{
		Poperation = operation;
	}

	/// <summary>
	/// 获取智能技术
	/// </summary>
	/// <returns></returns>
	int Gold::GetIntellectual()
	{
		return Pintellectual;
	}
	/// <summary>
	/// 设置智能技术
	/// </summary>
	/// <param name="operation"></param>
	void Gold::SetIntellectual(int intellectual)
	{
		Pintellectual = intellectual;
	}

	/// <summary>
	/// 获取资源配置
	/// </summary>
	/// <returns></returns>
	int Gold::GetResource()
	{
		return Presource;
	}
	/// <summary>
	/// 设置资源配置
	/// </summary>
	/// <param name="operation"></param>
	void Gold::SetResource(int resource)
	{
		Presource = resource;
	}


}

// StrategyProfile.h : 此文件包含 "StrategyProfile" 类。策略模式  Strategy Pattern C++ 14
// 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"
#include "StrategyProfile.h"

using namespace std;




namespace DuJewelryStrategyPattern
{

	/// <summary>
	/// 子类 商贸商会  
	/// </summary>
	class GoldCommerce:public Gold
	{
	public:

		/// <summary>
		///   构造函数
		/// </summary>
		/// <param name="operation">运营管理</param>
		/// <param name="intellectual">智能技术</param>
		/// <param name="resource">资源配置</param>
		GoldCommerce(int operation, int intellectual, int resource) :Gold(operation, intellectual, resource) {}


	};

}

#endif

// GoldCorporation.h : 此文件包含 "GoldCorporation" 类。策略模式  Strategy Pattern C++ 14
// 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"
#include "StrategyProfile.h"

using namespace std;




namespace DuJewelryStrategyPattern
{


	/// <summary>
	/// 子类 黄金公司
	/// </summary>
	class GoldCorporation:public Gold
	{

	public:

		/// <summary>
		/// 黄金公司 构造函数
		/// </summary>
		/// <param name="operation">运营管理</param>
		/// <param name="intellectual">智能技术</param>
		/// <param name="resource">资源配置</param>
		GoldCorporation(int operation, int intellectual, int resource) :Gold(operation, intellectual, resource) {}

	};

}

#endif

// GoldShop.h : 此文件包含 "GoldShop" 类。策略模式  Strategy Pattern C++ 14
// 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"
#include "StrategyProfile.h"

using namespace std;




namespace DuJewelryStrategyPattern
{

	/// <summary>
	/// 子类 店舖  
	/// </summary>
	class GoldShop :public Gold
	{

	public:

		/// <summary>
		///   构造函数
		/// </summary>
		/// <param name="operation">运营管理</param>
		/// <param name="intellectual">智能技术</param>
		/// <param name="resource">资源配置</param>
		GoldShop(int operation, int intellectual, int resource) :Gold(operation, intellectual, resource) {}
	};
}
#endif

// StrategyProfile.h : 此文件包含 "StrategyProfile" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#pragma once
//#ifndef STRATEGYPROFILE_H 
//#define STRATEGYPROFILE_H 
#ifndef _STRATEGYPROFILE_ 
#define _STRATEGYPROFILE_ 
#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"

using namespace std;


namespace DuJewelryStrategyPattern
{

	class Gold;//类前向声明

	/// <summary>
	/// 策略组合 父类 策略类的父类
	/// </summary>
	class StrategyProfile
	{

	private:


	public:

		/** 1 例用法*/

		/// <summary>
		/// 
		/// </summary>
		/// <param name="mainobj"></param>
		virtual void UseItem(Gold* mainobj)=0;  


		/*2 例用法
		/// <summary>
		/// 
		/// </summary>	
		virtual void UseItem() = 0;  
		
		*/
		/// <summary>
		/// 
		/// </summary>
		/// <param name="mainobj"></param>
		//void DuUseItem(Gold* mainobj);
		/// <summary>
		/// 
		/// </summary>
		virtual ~StrategyProfile() {}

	};

}

#endif

// StrategyDifferentiation.h : 此文件包含 "StrategyDifferentiation" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#pragma once
#ifndef STRATEGYDIFFERENTIATION_H 
#define STRATEGYDIFFERENTIATION_H 

#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
#include "StrategyProfile.h"

using namespace std;


namespace DuJewelryStrategyPattern
{

	/// <summary>
	///子类   
	/// 差异化战略(differentiation/differentiation strategy) 
	/// </summary>
	class StrategyDifferentiation :public StrategyProfile
	{

	public:

		/// <summary>
		/// 差异化战略
		/// </summary>
		/// <param name="mainobj"></param>
		virtual void UseItem(Gold* mainobj)
		{
			mainobj->SetOperation(mainobj->GetOperation() + 300); //补充300点生命值
			mainobj->SetIntellectual(mainobj->GetIntellectual() + 320);
			mainobj->SetResource(mainobj->GetResource() + 150);
			int operatin = mainobj->GetOperation();
			int intellectual = mainobj->GetIntellectual();
			int resource = mainobj->GetResource();

			cout << "执行差异化战略,营收增长"+to_string(operatin)+"%" << endl;
		}
	};
}
#endif

// StrategyMarketFocus.h : 此文件包含 "StrategyMarketFocus" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#pragma once
#ifndef STRATEGYMARKETFOCUS_H 
#define STRATEGYMARKETFOCUS_H 

#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
#include "StrategyProfile.h"

using namespace std;


namespace DuJewelryStrategyPattern
{

	/// <summary>
	///子类   专一化战略(Market focus/focus strategy),也称集中化战略(集中策略)、目标集中战略、目标聚集战略、目标聚集性战略 
	/// </summary>
	class StrategyMarketFocus :public StrategyProfile
	{

	public:
		/// <summary>
		/// 专一化战略
		/// </summary>
		/// <param name="mainobj"></param>
		virtual void UseItem(Gold* mainobj)
		{
			mainobj->SetOperation(mainobj->GetOperation() + 500); //补充500点
			mainobj->SetIntellectual(mainobj->GetIntellectual() + 200);
			mainobj->SetResource(mainobj->GetResource() + 50);
			int operatin = mainobj->GetOperation();
			int intellectual = mainobj->GetIntellectual();
			int resource = mainobj->GetResource();
			cout << "执行专一化战略,营收增长" + to_string(operatin) + "%" << endl;
		}
	};
}
#endif

// StrategyOverallCost.h : 此文件包含 "StrategyOverallCost" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#pragma once
#ifndef STRATEGYOVERALLCOST_H 
#define STRATEGYOVERALLCOST_H 

#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
#include "StrategyProfile.h"

using namespace std;


namespace DuJewelryStrategyPattern
{

	/// <summary>
	/// 子类 成本领先战略(Overall cost leadership,也称低成本战略) 
	/// </summary>
	class StrategyOverallCost:public StrategyProfile
	{

	public:
		/// <summary>
		///  成本领先战略
		/// </summary>
		/// <param name="mainobj"></param>
		virtual void UseItem(Gold* mainobj)
		{
			mainobj->SetOperation(mainobj->GetOperation() + 200); //补充200点
			mainobj->SetIntellectual(mainobj->GetIntellectual() + 500);
			mainobj->SetResource(mainobj->GetResource() + 180);
			int operatin = mainobj->GetOperation();
			int intellectual = mainobj->GetIntellectual();
			int resource = mainobj->GetResource();
			cout << "执行成本领先战略,营收增长" + to_string(operatin) + "%" << endl;
		}

	};

}

#endif

// SupplierDiamond.h : 此文件包含 "SupplierDiamond" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#pragma once
#ifndef SUPPLIERDIAMOND_H 
#define SUPPLIERDIAMOND_H 


#include <iostream>
#include <sstream>
#include <vector>
using namespace std;


namespace DuJewelryStrategyPatternUnabstract
{
	/// <summary>
	/// 钻石供应商
	/// </summary>
	class SupplierDiamond
	{
	public:

		/// <summary>
		/// 获取信息
		/// </summary>
		void getInfo()
		{
			cout << "这是一钻石供应商" << endl;
		}
		//其他代码略......
	};
}


#endif

// SupplierGold.h : 此文件包含 "SupplierGold" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#pragma once
#ifndef SUPPLIERGOLD_H 
#define SUPPLIERGOLD_H 

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;


namespace DuJewelryStrategyPatternUnabstract
{

	/// <summary>
	/// 黄金供应商
	/// </summary>
	class SupplierGold  
	{
	public:

		/// <summary>
		/// 获取信息
		/// </summary>
		void getInfo()
		{
			cout << "这是一黄金供应商" << endl;
		}
		//其他代码略......
	};
}


#endif

// SupplierJade.h : 此文件包含 "SupplierJade" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#pragma once
#ifndef SUPPLIERJADE_H 
#define SUPPLIERJADE_H 


#include <iostream>
#include <sstream>
#include <vector>
using namespace std;


namespace DuJewelryStrategyPatternUnabstract
{
	/// <summary>
	/// 玉供应商
	/// </summary>
	class SupplierJade
	{
	public:

		/// <summary>
		/// 获取信息
		/// </summary>
		void getInfo()
		{
			cout << "这是一玉供应商" << endl;
		}
		//其他代码略......
	};
}


#endif

// SupplierPearl.h : 此文件包含 "SupplierPearl" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#pragma once
#ifndef SUPPLIERPEARL_H 
#define SUPPLIERPEARL_H 


#include <iostream>
#include <sstream>
#include <vector>
using namespace std;


namespace DuJewelryStrategyPatternUnabstract
{
	/// <summary>
	/// 珍珠供应商
	/// </summary>
	class SupplierPearl
	{
	public:

		/// <summary>
		/// 获取信息
		/// </summary>
		void getInfo()
		{
			cout << "这是一珍珠供应商" << endl;
		}
		//其他代码略......
	};
}


#endif

// SupplierIncrement.h : 此文件包含 "SupplierIncrement" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#pragma once
#ifndef SUPPLIERINCREMENT_H 
#define SUPPLIERINCREMENT_H 


#include <iostream>
#include <sstream>
#include <vector>

#include "SupplierDiamond.h"
#include "SupplierGold.h"
#include "SupplierJade.h"
#include "SupplierPearl.h"

using namespace std;


namespace DuJewelryStrategyPatternUnabstract
{

	/// <summary>
	/// 供应商
	/// </summary>
	class SupplierIncrement
	{

	public:

		/// <summary>
		/// 创建 黄金供应商
		/// </summary>
		/// <param name="pobj"></param>
		void createSupplierGold(SupplierGold* pobj) 
		{
			//进行创建处理......
			pobj->getInfo(); //可以调用成员函数
		}
		//其他代码略......

	public:

		/// <summary>
		/// 创建 钻石供应商
		/// </summary>
		/// <param name="pobj"></param>
		void createSupplierDiamond(SupplierDiamond* pobj) 
		{
			//进行创建处理......
			pobj->getInfo(); //可以调用成员函数
		}

	public:

		/// <summary>
		/// 创建 珍珠供应商
		/// </summary>
		/// <param name="pobj"></param>
		void createSupplierPearl(SupplierPearl* pobj)
		{
			//进行创建处理......
			pobj->getInfo(); //可以调用成员函数
		}
	public:

		/// <summary>
		/// 创建 玉供应商
		/// </summary>
		/// <param name="pobj"></param>
		void createSupplierJade(SupplierJade* pobj)
		{
			//进行创建处理......
			pobj->getInfo(); //可以调用成员函数
		}

	};

}


#endif
// GeovinDu.h : 此文件包含 "GeovinDu" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 




#pragma once
#ifndef GEOVINDU_H 
#define GEOVINDU_H 



#include <iostream>
#include <sstream>
#include <vector>
#include "Gold.h"
#include "StrategyProfile.h"

using namespace std;




namespace DuJewelryStrategyPattern
{

	/// <summary>
	/// 业务处理
	/// </summary>
	class GeovinDu
	{

	private:

	public:
		/// <summary>
		/// 
		/// </summary>
		void displayUnabstract();

	};

}


#endif

// GeovinDu.cpp : 此文件包含 "GeovinDu" 类。策略模式  Strategy Pattern C++ 14
// 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 


#include "GeovinDu.h"
#include <iostream>
#include <sstream>
#include <vector>

#include "Gold.h"
#include "GoldShop.h"
#include "GoldCommerce.h"
#include "GoldCorporation.h"


#include "SupplierDiamond.h"
#include "SupplierGold.h"
#include "SupplierJade.h"
#include "SupplierPearl.h"
#include "SupplierIncrement.h"
#include "StrategyProfile.h"
#include "StrategyDifferentiation.h"
#include "StrategyMarketFocus.h"
#include "StrategyOverallCost.h"



using namespace std;
using namespace DuJewelryStrategyPatternUnabstract;




namespace DuJewelryStrategyPattern
{


	class Gold;

	/// <summary>
	/// 
	/// </summary>
	void GeovinDu::displayUnabstract()
	{


		    //
		   Gold* prole_cor = new GoldCorporation(1000,20,500);//这没有采用工厂模式,如果主角很多,可以考虑采用工厂模式创建对象
			
			

			//创建主角
			Gold* prole_shop = new GoldShop(1000, 0, 200);
			
			//delete prole_shop;


			Gold* prole_Com = new GoldCommerce(8000, 20, 400);
			//prole_Com->UseItem(LF_Commerce, bussines);
			
			//成本策略1

			//StrategyProfile* strateby;
			//StrategyOverallCost d;
			//strateby = &d;
			
			/* 1 例  问题: 无法实例化抽象类  已解决*/
			StrategyProfile* strateby = new StrategyOverallCost(); //创建成本策略
			prole_cor->SetStrategyProfile(strateby); //主角设置策略,准备
			prole_cor->UseItem(LF_Corporation, colse);
			prole_cor->UseItem(); //主角

			//差异化战略
			StrategyProfile* strateby2 = new StrategyDifferentiation(); //创建差异化战略
			prole_shop->SetStrategyProfile(strateby2); //主角设置策略
			prole_shop->UseItem(LF_Shop, bussines);
			prole_shop->UseItem(); //主角用策略
			
			StrategyProfile* strateby3 = new StrategyMarketFocus();			
			prole_Com->SetStrategyProfile(strateby3);
			prole_Com->UseItem(LF_Commerce, bussines);
			prole_Com->UseItem();//


			//释放资源
			delete strateby;
			delete strateby2;
			delete strateby3;
			delete prole_shop;
			delete prole_cor;
			delete prole_Com;


		// 2 例------------------------------/**/
			
			DuJewelryStrategyPatternUnabstract::SupplierGold* pobjud = new DuJewelryStrategyPatternUnabstract::SupplierGold();
			DuJewelryStrategyPatternUnabstract::SupplierIncrement* pobdu = new DuJewelryStrategyPatternUnabstract::SupplierIncrement();
			pobdu->createSupplierGold(pobjud); //创建一个黄金供应商

			DuJewelryStrategyPatternUnabstract::SupplierDiamond* pobjelm = new DuJewelryStrategyPatternUnabstract::SupplierDiamond();
			pobdu->createSupplierDiamond(pobjelm);//创建一个钻石供应商

			DuJewelryStrategyPatternUnabstract::SupplierJade* pobjade = new DuJewelryStrategyPatternUnabstract::SupplierJade();
			pobdu->createSupplierJade(pobjade);//创建一个玉供应商

			DuJewelryStrategyPatternUnabstract::SupplierPearl* pobpearl = new DuJewelryStrategyPatternUnabstract::SupplierPearl();
			pobdu->createSupplierPearl(pobpearl); //创建一个珍珠供应商

		   //资源释放
		   delete pobdu;
		   delete pobjud;
		   delete pobjelm;
		   delete pobjade;
		   delete pobpearl;


	}


}

调用:

// ConsoleDuStrategyPattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//策略模式  Strategy Pattern   行为模式 Behavioral Design Patterns
// // 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. 
//
#define _UNICODE

#include <iostream>
#include "GeovinDu.h"
#include "SupplierIncrement.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 DuJewelryStrategyPattern;
using namespace DuJewelryStrategyPatternUnabstract;


int main()
{
    std::cout << "Hello World!!Programa Olá Mundo!涂聚文 Geovin Du\n";
    GeovinDu geovin;
    geovin.displayUnabstract();

    system("pause");

    return 0;
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
#define UNICODE

输出:

Hello World!!Programa Olá Mundo!涂聚文 Geovin Du
黄金公司歇业中,为了更好的准备迎接新的增长点!
执行成本领先战略,营收增长1400%
店舖营业中,运营增长:(1000)500,智能技术增长:(0)0,资源增长:(200)0
执行差异化战略,营收增长1800%
商贸商会营业中,运营增长:(8000)300,智能技术增长:(20)0,资源增长:(400)0
执行专一化战略,营收增长8800%
这是一黄金供应商
这是一钻石供应商
这是一玉供应商
这是一珍珠供应商
请按任意键继续. . .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cpp: Strategy Pattern 的相关文章

随机推荐

  • Log Structured Merge Trees(LSM) 原理(LSM 算法的原理是什么?)

    十年前 谷歌发表了 BigTable 的论文 论文中很多很酷的方面之一就是它所使用的文件组织方式 这个方法更一般的名字叫 Log Structured Merge Tree LSM是当前被用在许多产品的文件结构策略 HBase Cassan
  • nginx basic auth配置踩坑记

    nginx的basic auth配置由ngx http auth basic module模块提供 对HTTP Basic Authentication协议进行了支持 用户可通过该配置设置用户名和密码对web站点进行简单的访问控制 basi
  • 「深度学习表情动作单元识别」 最新2022研究综述

    来源 专知 基于深度学习的表情动作单元识别是计算机视觉与情感计算领域的热点课题 每个动作单元描述了一种人脸局部表情动作 其组合可定量地表示任意表情 当前动作单元识别主要面临标签稀缺 特征难捕捉和标签不均衡3个挑战因素 基于此 本文将已有的研
  • js获取被选择文件的路径方法汇总

    html代码如下
  • verilog的module调用

    目录 1 MUX2to1 2 MUX3to1 3 MUX4to1 作为写过很多代码的程序员应该知道什么是函数的调用 例如下面的代码中 main函数调用了add函数对两个数值进行相加的操作 int add int a int b return
  • Asp.Net 企业微信第三方应用开发(随手笔记)

    C 企业微信第三方应用开发 OAuth2简介 1 注册企业 2 新建第三方应用 3 网页授权链接 OAuth2简介 OAuth2的设计背景 在于允许用户在不告知第三方自己的帐号密码情况下 通过授权方式 让第三方服务可以获取自己的资源信息 1
  • Vuforia 中在脚本中添加识别图被识别和丢失的回调

    start Vuforia 的unity sdk中有一个重要的脚本 DefaultTrackableEventHandler cs 这个脚本在场景中拖入ImageTarget的预制体时会自动挂载 using UnityEngine usin
  • 快速排序【模板+边界处理】

    全文目录 快速排序的思想 快速排序演示图 代码模板 i 和 j 的取值和循环处理 i 和 j 的取值 循环条件判断 边界问题 什么是边界问题 如何处理边界问题 为什么要这样处理边界问题 区间划分问题 取最值问题 mid 取中间值时是否需要
  • LLVM学习之基础知识

    介绍 学习LLVM与代码混淆技术课程总结出来的经验 希望能够帮助到大家理解 1 我们首先学会LLVM的基础知识 2 如何搭建LLVM的环境 3 编译一个Hello world 4 LLVM IR基本语法 LLVM搭建环境 Ubuntu 20
  • 让AI生成的图像转化为视频

    Hello 让AI生成图像相信都不陌生 毕竟相关内容铺天盖地 如何让AI生成的图像再转化为视频呢 让图像动起来 让图像去说话 或许是一件非常有趣的一件事情呢 那么 我们接下来要不要去试一试 马上去体验一下具有前瞻性的前沿科技呢 我想 你一定
  • 48脚STM32内部基准电压校准ADC的一些心得记录

    STM32的48脚的单片机因为没有Vref Vref 所以我们使用一些高精度参考电压芯片来提高ADC的精度很不方便 这里还有一种方法可以参考下 STM32内部有一个专门用于校准的稳压器VREFINT 它由外部的VSSA供电 他的电压一般为1
  • k8s-day1-k8s简介及基础架构

    1 K8S简介 Kubernetes是容器集群管理系统 是一个开源的平台 可以实现容器集群的自动化部署 自动扩缩容 维护等功能 Kubernetes是一个完备的分布式系统支撑平台 具有完备的集群管理能力 多扩多层次的安全防护和准入机制 多租
  • python 程序员进阶之路:从新手到高手的100个模块

    在知乎和CSDN的圈子里 经常看到 听到一些 python 初学者说 学完基础语法后 不知道该学什么 学了也不知道怎么用 一脸的茫然 近日 CSDN的公众号推送了一篇博客 题目叫做 迷思 Python 学到什么程度可以面试工作 真实反映了
  • win电脑主板设置的Bios密码清除方法

    bios保存着计算机最重要的基本输入输出的程序 开机后自检程序和系统自启动程序 它可从CMOS中读写系统设置的具体信息由于我们一般很少需求进入BIOS设置 因此久而久之 很多朋友容易忘记Bios密码 那么Bios密码忘记了怎么办呢 这是最近
  • opencv中 aplacian算子、Scharr和Sobel算子的API参数

    1 Laplacian算子 cv2 Laplacian src ddepth dst ksize scale delta borderType src 输入图像 通常为灰度图像 单通道 ddepth 输出图像的深度 一般使用cv2 CV 6
  • Spring中有哪些情况会导致@Bean注入失效呢?

    转自 Spring中有哪些情况会导致 Bean注入失效呢 下文笔者讲述Spring中导致 bean注入失败的相关情况说明 如下所示 实现思路 1 component scan扫描路径配置错误 2 Conditional修饰条件 3 bean
  • 学习swift的资料

    https developer apple com library content documentation Swift Conceptual Swift Programming Language CollectionTypes html
  • 数据库表创建索引

    创建一个表 创建名为 Person 的表 有四个列 列名是 LastName FirstName Address 以及 Age 定义列的长度 CREATE TABLE Person LastName varchar 30 FirstName
  • 使用scrapy框架爬取51job的关于python的职位,并且进行分析

    example py 爬虫的主文件 大部分的爬虫逻辑都在这 coding utf 8 import scrapy import pyecharts from items import Scrapy3Item class ExampleSpi
  • cpp: Strategy Pattern

    Gold h 此文件包含 Gold 类 策略模式 Strategy Pattern C 14 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit pragma once ifndef GOLD H