設計模式(十三)外觀模式 C++

介紹

“用一句話說明就是分層設計,爲複雜的模塊套個殼~“”

意圖:爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

主要解決:降低訪問複雜系統的內部子系統時的複雜度,簡化客戶端與之的接口。

何時使用: 

1、設計初期階段,有意識得將不同的兩個層分離,比如經典的三層結構......

2、開發階段,子系統因爲不斷的重構演化而變得越來越複雜,產生了很多的很小的類,這種情況下,增加外觀 Facade可以提供簡單的接口減少依賴。

3、維護遺留的大型系統的時候,原有代碼不好改變,設計一個外觀Facade類,讓新系統與Facade交互

#include <iostream>
using namespace std;

class SubSystemA
{
public:
	void doThing()
	{
		cout << "SubSystemA run" << endl;
	}
};

class SubSystemB
{
public:
	void doThing()
	{
		cout << "SubSystemB run" << endl;
	}
};

class SubSystemC
{
public:
	void doThing()
	{
		cout << "SubSystemC run" << endl;
	}
};

class Facade
{
public:
	Facade()
	{
		sysA = new SubSystemA;
		sysB = new SubSystemB;
		sysC = new SubSystemC;
	}
	~Facade()
	{
		delete sysA;
		delete sysB;
		delete sysC;
	}
public:
	void doThing()
	{
		sysA->doThing();
		sysB->doThing();
		sysC->doThing();
	}
private:
	SubSystemA *sysA;
	SubSystemB *sysB;
	SubSystemC *sysC;
};

void main1()
{
	SubSystemA *sysA = new SubSystemA;
	SubSystemB *sysB = new SubSystemB;
	SubSystemC *sysC = new SubSystemC;

	sysA->doThing();
	sysB->doThing();
	sysC->doThing();
	delete sysA;
	delete sysB;
	delete sysC;

	return;
}

void main2()
{
	Facade *f = new Facade;
	f->doThing();
	delete f;
}

void main()
{
	//main1();
	main2();
	system("pause");
}

 

發佈了195 篇原創文章 · 獲贊 41 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章