首页 > 其他分享 >cpp: Facade Pattern

cpp: Facade Pattern

时间:2023-05-20 14:44:34浏览次数:47  
标签:GoldChatVoice gp Pattern 开启 GoldSound Facade cpp include GoldGraphic

 

/*****************************************************************//**
 * \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
请按任意键继续. . .

  

 

标签:GoldChatVoice,gp,Pattern,开启,GoldSound,Facade,cpp,include,GoldGraphic
From: https://www.cnblogs.com/geovindu/p/17417206.html

相关文章

  • cpp: Singleton Pattern
     //GoldConfig.h:此文件包含"GoldConfig"类。装饰器模式SingletonPatternC++14////SingletonPattern单例模式单件模式、Singleton//2023年5月20日涂聚文GeovinDuVisualStudio2022edit.#pragmaonce#ifndefGOLDCONFIG_H#defineGOLDCONFIG_H#i......
  • pta_【CPP0039】vector应用测试
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intmain(void){inti,a[10],b;for(i=0;i<10;i++){scanf("%d",&a[i]);}scanf("%d",&b);//插入的数{vector<int&......
  • 模板模式(Template Pattern)
    模板模式一、介绍  模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方式使......
  • 组合模式(Composite Pattern)
    组合模式一、概述  组合模式(CompositePattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。二、介绍......
  • 策略模式(Strategy Pattern)
    策略模式一、介绍  在策略模式(StrategyPattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。意图:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用if...else所带来的复杂和难以维护......
  • CPP0037利用类模板解决绝对值功能
    请使用模板参数设计实现绝对值模板类Absolute,Absolute类功能要求成员函数getValue(void)const计算类数据的绝对值,类数据类型应能适应整型、浮点型、双精度型等各种类型,绝对值类型与类数据一样。#include<iostream>usingnamespacestd;/*请在这里填写答案*/template<classT>c......
  • cpp: point
     //ConsoleStructSimpleApp.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。//#include<iostream>#include<fstream>//文件操作#include<sstream>//int转string#include<iomanip>//cout格式化输出setw()#include<stdlib.h>#include&qu......
  • pta_【CPP0029】以圆类Circle及立体图形类Solid为基础设计圆锥类Cone
    #include<iostream>#include<cmath>usingnamespacestd;//点类PointclassPoint{private:doublex;doubley;public:Point(doublexv=0,doubleyv=0);/*构造函数*/Point(constPoint&p);/*拷贝构造*/~Point();/*......
  • cpp: Observer Pattern II
     //SupperGold.h:此文件包含"SupperGold"类。ObserverPattern观察者模式C++14//JewelryObserverPattern观察者模式//2023年5月10日涂聚文GeovinDuVisualStudio2022edit.#pragmaonce#ifndefSUPPERGOLD_H#defineSUPPERGOLD_H#include<io......
  • 适配器模式(Adapter Pattern)
    模式动机适配器模式(AdapterPattern)是一种使用频率非常高的结构型模式,如果在系统中存在不兼容的接口,可以通过引入一个适配器来使得原本因为接口不兼容而不能一起工作的两个类可以协同工作。适配器模式中适配器的作用与现实生活中存在的电源适配器、网络适配器等作用相同。在引入......