Patrones de diseño C++ Patrón de apariencia

Ya sea en la vida real o en el proceso de desarrollo de software, las personas a menudo se encuentran con esta situación: necesitan lidiar con múltiples objetos, por ejemplo, cuando los usuarios ensamblan sus propias computadoras, necesitan comprar hardware como monitores, placas base, discos duros, memoria y CPU Equipos, el proceso de ensamblaje es engorroso y puede haber incompatibilidad de equipos, y comprar directamente una computadora que haya sido ensamblada por profesionales puede ahorrar estos problemas. No necesitamos comprar equipo, y se puede obtener una computadora completa a través de ensambladores de computadoras profesionales. Debido a la aparición de los ensambladores de computadoras, la interacción entre los usuarios y múltiples dispositivos se simplifica, de modo que los usuarios pueden usarlos sin preocuparse por los detalles de ensamblaje de los dispositivos.Aquí, los ensambladores de computadoras actúan como una "clase de fachada" que llamamos un rol. que simplifica el proceso de interacción entre un usuario y múltiples objetos. El patrón basado en esta idea de diseño se llama " Patrón de apariencia " .

Definición de pensamiento : para proporcionar una entrada unificada para un conjunto de interfaces en el subsistema, el modo exterior define una interfaz de alto nivel, lo que hace que el subsistema sea más fácil de usar. La comunicación externa con los subsistemas se puede realizar a través de un objeto de fachada unificado

ventajas :

  1. Protege los componentes del subsistema de los clientes, lo que reduce la cantidad de objetos que manejan los clientes y facilita el uso del subsistema
  2. Se logra una relación débilmente acoplada entre los subsistemas y los clientes.

Desventajas :

  1. No se puede restringir bien a los clientes el uso de clases de subsistemas, lo que reduce la variabilidad y la flexibilidad si es demasiado restrictivo
  2. Agregar un nuevo subsistema puede requerir modificar el código de la clase de apariencia o el cliente, lo que viola el "principio de abrir y cerrar"

Escenarios aplicables :

  1. Use el patrón de fachada cuando desee proporcionar una interfaz simple a un subsistema complejo

Caso : Realice la aplicación del modo de apariencia de cine en casa (cada producto proporciona una operación de encendido y apagado)
Realice el modo KTV: TV encendida, luces apagadas, audio encendido, micrófono encendido, DVD encendido
Implementación de código :
cada producto proporciona un método de encendido y apagado

//电视类
class Television
{
    
    
public:
	void On()
	{
    
    
		cout << "电视打开" << endl;
	}
	void Off()
	{
    
    
		cout << "电视关闭" << endl;
	}
};

//灯类
class Light
{
    
    
public:
	void On()
	{
    
    
		cout << "灯打开" << endl;
	}
	void Off()
	{
    
    
		cout << "灯关闭" << endl;
	}
};

//音响类
class Audio
{
    
    
public:
	void On()
	{
    
    
		cout << "音响打开" << endl;
	}
	void Off()
	{
    
    
		cout << "音响关闭" << endl;
	}
};

//麦克风类
class Microphone
{
    
    
public:
	void On()
	{
    
    
		cout << "麦克风打开" << endl;
	}
	void Off()
	{
    
    
		cout << "麦克风关闭" << endl;
	}
};

//dvd类
class DvdPlayer
{
    
    
public:
	void On()
	{
    
    
		cout << "DVD打开" << endl;
	}
	void Off()
	{
    
    
		cout << "DVD关闭" << endl;
	}
};

En un objeto de fachada, para gestionar la funcionalidad de los productos de la organización.

class KTVMode
{
    
    
public:
	KTVMode()
	{
    
    
		pTv = new Television;
		pLight = new Light;
		pAudio = new Audio;
		pMicrophone = new Microphone;
		pDvd = new DvdPlayer;
	}
	~KTVMode()
	{
    
    
		delete pTv;
		delete pLight;
		delete pAudio;
		delete pMicrophone;
		delete pDvd;
	}

	//打开ktv
	void OnKty()
	{
    
    
		pTv->On();
		pLight->Off();
		pAudio->On();
		pMicrophone->On();
		pDvd->On();
	}
	//关闭ktv
	void OffKty()
	{
    
    
		pTv->Off();
		pLight->On();
		pAudio->Off();
		pMicrophone->Off();
		pDvd->Off();
	}

private:
	Television* pTv;
	Light* pLight;
	Audio* pAudio;
	Microphone* pMicrophone;
	DvdPlayer* pDvd;
};

Ejecute la captura de pantalla:
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44443986/article/details/117528092
Recomendado
Clasificación