设计模式02-工厂模式

工厂模式

一切都在代码中:这种模式适合A-B类型。

  1. 抽象水果,2.抽象工厂
#include <iostream>
using namespace std;
class AbFruit{
public:
	virtual void getFruit() = 0;
};


class banana :public AbFruit{
	virtual void getFruit()
	{
		printf("香蕉\n");
	}
};


class apple :public AbFruit{
	virtual void getFruit()
	{
		printf("苹果\n");
	}
};

class AbFactory{
public:
	virtual AbFruit *CreateProudct() = 0;
};

class BananaF :public AbFactory{
public:
	AbFruit *CreateProudct()
	{
		
		return new banana;
	}
};

class AppleF :public AbFactory{
public:
	AbFruit *CreateProudct()
	{
		return new apple;
		
	}
};

//增加的新的产品
class pear :public AbFruit{
public:
	void getFruit()
	{
		printf("我是梨子\n");
	}
};

class PearF :public AbFactory
{
public:
	AbFruit * CreateProudct()
	{
		return new pear;
	}

};


void main()
{
	AbFactory *f = NULL;
	AbFruit *m_fruit = NULL;
	f = new BananaF;
	m_fruit = f->CreateProudct();
	m_fruit->getFruit();


	f = new AppleF;
	m_fruit = f->CreateProudct();
	m_fruit->getFruit();

	//如果要吃梨pear,就先搞个梨水果,再搞个梨加工厂
	f = new PearF;
	m_fruit = f->CreateProudct();
	m_fruit->getFruit();

	system("pause");
}
发布了65 篇原创文章 · 获赞 6 · 访问量 1560

猜你喜欢

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