设计模式04-抽象工厂模式

抽象工厂模式

其实这部分内容没啥好讲的把代码看懂就行了,原理都不难,就比如本例子,一个工厂既可以生成鼠标和键盘,至于怎么生成就是工厂的事情了,比如联想工厂和戴尔工厂,对于用户来说,我想用哪个牌子的鼠标和键盘这是我自己可以选择的。

#include<iostream>
using namespace std;
class keyboard{
public:
	virtual void getKeyBoard() = 0;
};
class keyboardDell :public keyboard{
public:
	virtual void getKeyBoard() override final
	{
		cout << "我是戴尔的键盘\n";
	}
};

class keyboardLenovo :public keyboard{
public:
	virtual void getKeyBoard() override final
	{
		cout << "我是联想的键盘\n";
	}
};

class mouse{
public:
	virtual void getMouse() = 0;
};
class mouseDell :public mouse
{
public:
	virtual void getMouse() override final
	{
		cout << "我是戴尔的鼠标\n";
	}
};

class mouseLenovo :public mouse
{
public:
	virtual void getMouse() override final
	{
		cout << "我是联想的鼠标\n";
	}
};

class Factory{
public:
	virtual keyboard *CreateKeyBoard() = 0;
	virtual mouse *CreateMouse() = 0;
};

class DellFactory:public Factory
{
public:
	virtual keyboard *CreateKeyBoard() override final
	{
		return new keyboardDell;
	}
	virtual mouse *CreateMouse() override final
	{
		return new mouseDell;
	}
};


class LenovoFactory :public Factory
{
public:
	virtual keyboard *CreateKeyBoard() override final
	{
		return new keyboardLenovo;
	}
	virtual mouse *CreateMouse() override final
	{
		return new mouseLenovo;
	}
};
void main()
{

	//我想用联想的键盘和戴尔的鼠标
	Factory *m_lenf = new LenovoFactory;
	keyboard *m_lenkey = m_lenf->CreateKeyBoard();
	m_lenkey->getKeyBoard();

	Factory *m_dellf = new DellFactory;
	mouse *m_dellmouse = m_dellf->CreateMouse();
	m_dellmouse->getMouse();
	

	system("pause");
}

结果:
在这里插入图片描述

发布了65 篇原创文章 · 获赞 6 · 访问量 1558

猜你喜欢

转载自blog.csdn.net/FairLikeSnow/article/details/103739483