工厂模式
一切都在代码中:这种模式适合A-B类型。
- 抽象水果,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");
}