设计模式8-桥接模式-C++

一篇好文章:https://blog.csdn.net/u012581604/article/details/72887029

如果A和B的关系是组合关系或者是关联关系,B的变化形式很多而且对A的影响很大,这种情况使用桥接模式。

桥接模式我理解为"海纳百川"。

 

class OS
{
public:
	virtual void show() = 0;
};

class Linux :public OS
{
};

class Ubuntu : public Linux
{
public:
	void show() override
	{
		cout << "Linux OS:Ubuntu" << endl;
	}
};

class Windows :public OS
{
};

class Win10 :public Windows
{
public:
	void show() override
	{
		cout << "Windows OS:Win10" << endl;
	}
};

class Win8 :public Windows
{
public:
	void show() override
	{
		cout << "Windows OS:Win8" << endl;
	}
};

class Mac :public OS
{
};

class Mac10 :public Mac
{
public:
	void show() override
	{
		cout << "Mac OS:Mac10" << endl;
	}
};

class Computer
{
public:
	virtual void setOS(OS* os) = 0;
};

class ThinkPad :public Computer
{

};

class E570 :public ThinkPad
{
public:
	void setOS(OS* os) override
	{
		m_os = os;
		m_os->show();
	}
public:
	OS* m_os;
};

class T480 :public ThinkPad
{
public:
	void setOS(OS* os) override
	{
		m_os = os;
		m_os->show();
	}
public:
	OS* m_os;
};

class Apple :public Computer
{

};
class MacPro :public Apple
{
public:
	void setOS(OS* os) override
	{
		m_os = os;
		m_os->show();
	}
public:
	OS* m_os;
};

class Lenovo :public Computer
{

};
class MX250 :public Lenovo
{
public:
	void setOS(OS* os) override
	{
		m_os = os;
		m_os->show();
	}
public:
	OS* m_os;
};

int main()
{
    Computer* oneComputer = new E570();
	OS* oneOS = new Ubuntu();
	OS* twoOS = new Win8();
	OS* threeOS = new Mac10();
	oneComputer->setOS(oneOS);
	oneComputer->setOS(twoOS);
	oneComputer->setOS(threeOS);
	delete oneOS;
	delete twoOS;
	delete threeOS;
	delete oneComputer;
}

猜你喜欢

转载自blog.csdn.net/u010196624/article/details/88721270
今日推荐