結構型模式----外觀模式(C++)

結構型模式----外觀模式

外觀模式爲多個複雜的子系統提供一個一致的接口,而使這些子系統更加容易被訪問

模式結構與實現

模式的結構
  • 外觀角色:爲多個子系統對外提供了一個共同的接口
  • 子系統角色:實現系統的部分功能,客戶可以通過外觀角色訪問其資源
  • 客戶角色:通過一個外觀角色訪問子系統的功能
外觀模式UML類圖

在這裏插入圖片描述

優點
  • 降低了子系統和客戶端的耦合度
  • 對用戶屏蔽了子系統組件
缺點
  • 不能很好的限制客戶使用子系統類
  • 增加新的子系統可能需要修改外觀類或客戶端的源代碼,違反了“開閉原則”

外觀模式的應用場景

  1. 擁有多個子系統的複雜系統構建時,外觀模式可以爲系統設計一個簡單的接口供外界訪問
  2. 當客戶端和多個子系統之間有很大聯繫時,引入外觀模式可以將他們分離,從而提高子系統的獨立性和可移植性

外觀模式實例

#include <iostream>
using namespace std;

class system1
{
public:
	void run()
	{
		cout << "子系統一啓動" << endl;
	}
};

class system2
{
public:
	void run()
	{
		cout << "子系統二啓動" << endl;
	}
};

class system3
{
public:
	void run()
	{
		cout << "子系統三啓動" << endl;
	}
};

class system4
{
public:
	void run()
	{
		cout << "子系統四啓動" << endl;
	}
};

class Faced 
{
public:
	Faced()
	{
		pSystem1 = new system1;
		pSystem2 = new system2;
		pSystem3 = new system3;
		pSystem4 = new system4;
	}
	void work()
	{
		pSystem1->run();
		pSystem2->run();
		pSystem3->run();
		pSystem4->run();
	}
private:
	system1* pSystem1;
	system2* pSystem2;
	system3* pSystem3;
	system4* pSystem4;
};

int main()
{
	Faced* face = new Faced;
	face->work();
	system("pause");
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章