大話設計模式C++版本-08-外觀模式

概述

外觀模式:爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
優點: 1、減少系統相互依賴。 2、提高靈活性。 3、提高了安全性。
缺點:不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合適。

應用場景

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

一般步驟

1.寫多個子類且每個子類都有自己的方法;

class SubSystemOne
{
public:
   void MethonOne()
   {
   	cout << "子系統方法一" << endl;
   }
};

class SubSystemTwo
{
public:
   void MethonTwo()
   {
   	cout << "子系統方法二" << endl;
   }
};

2.另寫一個外觀類,實例化多個子類,且實現多個子類的方法組合。

class Facade  // 外觀類-封裝了子系統的接口
{
private:
	SubSystemOne   *One;
	SubSystemTwo   *Two;
public:
	Facade()
	{
		One	= new SubSystemOne();
		Two = new SubSystemTwo();
	}
	
	void MethonA()
	{
		cout << endl << "方法組A" << endl;
		//...
	}
	
	void MethonB()
	{
		cout << endl << "方法組B" << endl;
		//...
	}
};

具體實例完整代碼

//08Facade.cpp

#include <iostream>

using namespace std;

class SubSystemOne
{
public:
	void MethonOne()
	{
		cout << "子系統方法一" << endl;
	}
};

class SubSystemTwo
{
public:
	void MethonTwo()
	{
		cout << "子系統方法二" << endl;
	}
};

class SubSystemThree
{
public:
	void MethonThree()
	{
		cout << "子系統方法三" << endl;
	}
};

class SubSystemFour
{
public:
	void MethonFour()
	{
		cout << "子系統方法四" << endl;
	}
};

class Facade  // 外觀類-封裝了子系統的接口
{
private:
	SubSystemOne   *One;
	SubSystemTwo   *Two;
	SubSystemThree *Three;
	SubSystemFour  *Four;
	
public:
	Facade()
	{
		One	= new SubSystemOne();
		Two = new SubSystemTwo();
		Three = new SubSystemThree();
		Four = new SubSystemFour();
	}
	
	void MethonA()
	{
		cout << endl << "方法組A" << endl;
		One->MethonOne();
		Two->MethonTwo();
		Four->MethonFour();
	}
	
	void MethonB()
	{
		cout << endl << "方法組B" << endl;
		Two->MethonTwo();
		Three->MethonThree();
	}
};

int main()
{
	Facade *facade = new Facade();
	facade->MethonA();
	facade->MethonB();
	return 0;
}

參考資料

《大話設計模式》

如果對你有幫助的話,記得點贊收藏,如果有什麼遺漏的或者有什麼體會,請在評論告訴我,好東西記得分享 ^ _ ^

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