程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Design Pattern Bridge 橋設計模式

Design Pattern Bridge 橋設計模式

編輯:C++入門知識

Design Pattern Bridge 橋設計模式


橋設計模式其實就是一個簡單的has a relationship,就是一個類擁有另一個類,並使用另一個類實現需要的功能。

比如遙控器和電視之間可以使用橋設計模式達到可以使用同一個遙控器控制多台電視機的目的。

這樣的設計思想是多種設計模式反反復復使用基本思想。

仔細思考下會發現多種設計模式的底層思想其實是相通的,不過具體實現或者某些細節,應用等有那麼一點差別罷了。

下面就實現一個TV和remoter類,其中的remoter是可以隨時更換的。

#include 

class Remoter
{
public:
	virtual void changeChannel() = 0;
};

class OldRemoter : public Remoter
{
	short channel;
public:
	OldRemoter(short c) : channel(c) {}
	void changeChannel()
	{
		printf("Channel : %d\n", channel++);
	}
};

class NewRemoter : public Remoter
{
	int channel;
public:
	NewRemoter(int c) : channel(c) {}
	void changeChannel()
	{
		printf("Channel : %d\n", channel++);
	}
};

class TV
{
protected:
	Remoter *remoter;
	int channel;
public:
	TV(Remoter *r) : remoter(r), channel(0) {}
	virtual void changeRemoter(Remoter *r)
	{
		remoter = r;
	}

	virtual void changeChannel()
	{
		remoter->changeChannel();
	}
};

class BrandOneTV : public TV
{
public:
	BrandOneTV(Remoter *r) : TV(r){}
};

int main()
{
	Remoter *ore = new OldRemoter(0);
	Remoter *nre = new NewRemoter(1);

	TV *tv1 = new BrandOneTV(ore);
	tv1->changeChannel();
	ore->changeChannel();
	tv1->changeChannel();

	tv1->changeRemoter(nre);
	tv1->changeChannel();
	nre->changeChannel();
	tv1->changeChannel();

	return 0;
}

運行:



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved