cpp: Facade Pattern

 

/*****************************************************************//**
 * \file   GoldGraphic.h
 * \brief  Facade Pattern 外观模式
 * 涂聚文 Geovin Du Visual Studio 2022 edit. 
 * \author geovindu
 * \date   May 2023
 *********************************************************************/

#pragma once
#ifndef GOLDGRAPHIC_H 
#define GOLDGRAPHIC_H 

#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>



using namespace std;




namespace DuFacadePattern
{

	/// <summary>
	/// 图形相关类
	/// </summary>
	class GoldGraphic
	{

		//--------------单件类实现相关begin----------------
	private:
		GoldGraphic() {};
		GoldGraphic(const GoldGraphic& tmpobj);
		GoldGraphic& operator = (const GoldGraphic& tmpobj);
		~GoldGraphic() {};
	public:

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		static GoldGraphic& getInstance()
		{
			static GoldGraphic instance;
			return instance;
		}
		//--------------单件类实现相关end----------------
	public:
		/// <summary>
		/// 是否全屏显示(true:是)
		/// </summary>
		/// <param name="enable"></param>
		void display(bool enable) 
		{
			cout << "图形->是否全屏显示->" << enable << endl;
			//其他代码略......
		}
		/// <summary>
		/// 是否开启特效(true:是)
		/// </summary>
		/// <param name="enable"></param>
		void effect(bool enable)
		{
			cout << "图形->是否开启特效->" << enable << endl;
		}
		/// <summary>
		/// 设置窗口分辨率
		/// </summary>
		/// <param name="index"></param>
		void resolution(int index) 
		{
			cout << "图形->分辨率设置选项->" << index << endl;
		}
		/// <summary>
		/// 是否开启抗锯齿(true:是)
		/// </summary>
		/// <param name="enable"></param>
		void antialiasing(bool enable)
		{
			cout << "图形->是否开启抗锯齿->" << enable << endl;
		}
		//其他接口略......


	};
}

#endif


/*****************************************************************//**
 * \file   GoldSound.h
 * \brief  Facade Pattern 外观模式
 * 涂聚文 Geovin Du Visual Studio 2022 edit. 
 * \author geovindu
 * \date   20 May 2023
 *********************************************************************/

#pragma once
#ifndef GOLDSOUND_H 
#define GOLDSOUND_H 

#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>



using namespace std;




namespace DuFacadePattern
{

	/// <summary>
	/// 声音相关类
	/// </summary>
	class GoldSound
	{

		//--------------单件类实现相关begin----------------
	private:
		GoldSound() {};
		GoldSound(const GoldSound& tmpobj);
		GoldSound& operator = (const GoldSound& tmpobj);
		~GoldSound() {};
	public:
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		static GoldSound& getInstance()
		{
			static GoldSound instance;
			return instance;
		}
		//--------------单件类实现相关end----------------
	public:

		/// <summary>
		/// 是否开启背景声音(true:是)
		/// </summary>
		/// <param name="enable"></param>
		void bgsound(bool enable)
		{
			cout << "声音->是否开启背景声音->" << enable << endl;
		}

		/// <summary>
		/// 是否开启环境音效(true:是)
		/// </summary>
		/// <param name="enable"></param>
		void envirsound(bool enable)
		{
			cout << "声音->是否开启环境音效->" << enable << endl;
		}

		/// <summary>
		/// 是否开启表情声音(true:是)
		/// </summary>
		/// <param name="enable"></param>
		void expsound(bool enable) 
		{
			cout << "声音->是否开启表情声音->" << enable << endl;
		}

		/// <summary>
		/// 音量大小设置(0-100)
		/// </summary>
		/// <param name="level"></param>
		void setvolume(int level) 
		{
			cout << "声音->音量大小为->" << level << endl;
		}
		//其他接口略......


	};
}


#endif


/*****************************************************************//**
 * \file   GoldChatVoice.h
 * \brief  Facade Pattern 外观模式
 * 涂聚文 Geovin Du Visual Studio 2022 edit. 
 * 
 * \author geovindu
 * \date   20 May 2023
 *********************************************************************/

#pragma once
#ifndef GOLDCHATVOLCE_H 
#define GOLDCHATVOLCE_H 

#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>



using namespace std;




namespace DuFacadePattern
{

	/// <summary>
	/// 
	/// </summary>
	class GoldChatVoice
	{
		//--------------单件类实现相关begin----------------
	private:
		GoldChatVoice() {};
		GoldChatVoice(const GoldChatVoice& tmpobj);
		GoldChatVoice& operator = (const GoldChatVoice& tmpobj);
		~GoldChatVoice() {};
	public:
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		static GoldChatVoice& getInstance()
		{
			static GoldChatVoice instance;
			return instance;
		}
		//--------------单件类实现相关end----------------
	public:
		/// <summary>
		/// 麦克风音量大小设置(0-100)
		/// </summary>
		/// <param name="level"></param>
		void micvolume(int level) 
		{
			cout << "语音聊天->麦克风音量大小为->" << level << endl;
		}
		/// <summary>
		/// 麦克灵敏度设置(0-100)
		/// </summary>
		/// <param name="level"></param>
		void micsens(int level)
		{
			cout << "语音聊天->麦克风灵敏度为->" << level << endl;
		}
		/// <summary>
		/// 聊天音量设置(0-100)
		/// </summary>
		/// <param name="level"></param>
		void chatvolume(int level)
		{
			cout << "语音聊天->聊天音量为->" << level << endl;
		}
		//其他接口略......


	};
}


#endif


/*****************************************************************//**
 * \file   GoldConffacade.h
 * \brief  Facade Pattern 外观模式
 * 涂聚文 Geovin Du Visual Studio 2022 edit. 
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLDCONFFACADE_H 
#define GOLDCONFFACADE_H 

#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>

#include "GoldChatVoice.h"
#include "GoldGraphic.h"
#include "GoldSound.h"


using namespace std;




namespace DuFacadePattern
{

	/// <summary>
	/// 扮演外观模式角色的类
	/// </summary>
	class GoldConffacade
	{
		//--------------单件类实现相关begin----------------
	private:
		GoldConffacade() {};
		GoldConffacade(const GoldConffacade& tmpobj);
		GoldConffacade& operator = (const GoldConffacade& tmpobj);
		~GoldConffacade() {};
	public:

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		static GoldConffacade& getInstance()
		{
			static GoldConffacade instance;
			return instance;
		}
		//--------------单件类实现相关end----------------
	public:

		/// <summary>
		/// 对于低配置电脑,只开启一些低配置选项
		/// </summary>
		void LowConfComputer() 
		{
			GoldGraphic& g_gp = GoldGraphic::getInstance();
			g_gp.display(true); //全屏耗费资源更低
			g_gp.effect(false);
			g_gp.resolution(2);
			g_gp.antialiasing(false);

			GoldSound& g_snd = GoldSound::getInstance();
			g_snd.bgsound(false);
			g_snd.envirsound(false);
			g_snd.expsound(false);
			g_snd.setvolume(15);

			GoldChatVoice& g_cv = GoldChatVoice::getInstance();
			g_cv.micvolume(20);
			g_cv.micsens(50);
			g_cv.chatvolume(60);
		}
		/// <summary>
		/// 对于高配置电脑,能达到最好效果的项全部开启
		/// </summary>
		void HighConfComputer() 
		{
			GoldGraphic& g_gp = GoldGraphic::getInstance();
			g_gp.display(false);
			g_gp.effect(true);
			g_gp.resolution(0);
			g_gp.antialiasing(true);

			GoldSound& g_snd = GoldSound::getInstance();
			g_snd.bgsound(true);
			g_snd.envirsound(true);
			g_snd.expsound(true);
			g_snd.setvolume(50);

			GoldChatVoice& g_cv = GoldChatVoice::getInstance();
			g_cv.micvolume(100);
			g_cv.micsens(100);
			g_cv.chatvolume(100);
		}


	};
}

#endif


/*****************************************************************//**
 * \file   GeovinDu.cpp
 * \brief  Facade Pattern 外观模式
 * 涂聚文 Geovin Du Visual Studio 2022 edit. 
 * \author geovindu
 * \date   20 May 2023
 *********************************************************************/
#include "GeovinDu.h"
#include "GoldChatVoice.h"
#include "GoldGraphic.h"
#include "GoldSound.h"
#include "GoldConffacade.h"

using namespace std;




namespace DuFacadePattern
{

	/// <summary>
	/// 
	/// </summary>
	void GeovinDu::displayFacade()
	{
		DuFacadePattern::GoldGraphic& g_gp = DuFacadePattern::GoldGraphic::getInstance();
		g_gp.display(false);
		g_gp.effect(true);
		g_gp.resolution(2);
		g_gp.antialiasing(false);

		cout << "---------------" << endl;
		DuFacadePattern::GoldSound& g_snd = DuFacadePattern::GoldSound::getInstance();
		g_snd.setvolume(80);
		g_snd.envirsound(true);
		g_snd.bgsound(false);

		cout << "---------------" << endl;
		DuFacadePattern::GoldChatVoice& g_cv = DuFacadePattern::GoldChatVoice::getInstance();
		g_cv.chatvolume(70);
		g_cv.micsens(65);
		

			/**/
			DuFacadePattern::GoldConffacade& g_cffde = DuFacadePattern::GoldConffacade::getInstance();
			cout << "低配置电脑,调用LowConfComputer接口" << endl;
			g_cffde.LowConfComputer();
			cout << "------------------" << endl;
			cout << "高配置电脑,调用HighConfComputer接口" << endl;
			g_cffde.HighConfComputer();
			

	}

}

  

调用:

/*****************************************************************//**
 * \file   ConsoleDuFacadePattern.cpp
 * \brief  Facade Pattern 外观模式
 * 涂聚文 Geovin Du Visual Studio 2022 edit. 
 * \author geovindu
 * \date  20 May 2023
 *********************************************************************/
// ConsoleDuFacadePattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _UNICODE
#include <iostream>
#include "GeovinDu.h"



using namespace DuFacadePattern;

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

    system("pause");
    return 0;

}

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

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

  

输出:

Hello World!!Programa Olá Mundo!涂聚文 Geovin Du
图形->是否全屏显示->0
图形->是否开启特效->1
图形->分辨率设置选项->2
图形->是否开启抗锯齿->0
---------------
声音->音量大小为->80
声音->是否开启环境音效->1
声音->是否开启背景声音->0
---------------
语音聊天->聊天音量为->70
语音聊天->麦克风灵敏度为->65
低配置电脑,调用LowConfComputer接口
图形->是否全屏显示->1
图形->是否开启特效->0
图形->分辨率设置选项->2
图形->是否开启抗锯齿->0
声音->是否开启背景声音->0
声音->是否开启环境音效->0
声音->是否开启表情声音->0
声音->音量大小为->15
语音聊天->麦克风音量大小为->20
语音聊天->麦克风灵敏度为->50
语音聊天->聊天音量为->60
------------------
高配置电脑,调用HighConfComputer接口
图形->是否全屏显示->0
图形->是否开启特效->1
图形->分辨率设置选项->0
图形->是否开启抗锯齿->1
声音->是否开启背景声音->1
声音->是否开启环境音效->1
声音->是否开启表情声音->1
声音->音量大小为->50
语音聊天->麦克风音量大小为->100
语音聊天->麦克风灵敏度为->100
语音聊天->聊天音量为->100
请按任意键继续. . .

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章