设计模式之工厂方法模式
定义
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法(Factory Method)使一个类的实例化延迟到其子类。也叫虚构造器(Virtual Constructor)
代码如下:
//定义产品接口,从而可以扩展出N多系列产品,以手机为例
class ISamsung
{
public:
ISamsung(){}
virtual ~ ISamsung(){}
virtual void Call() = 0 ;
}
//定义工厂接口,用来生产不同系列的手机
class IFactory
{
public:
IFactory(){}
virtual ~ IFactory(){}
virtual ISamsung * MakePhone()=0;
}
//假如要生产一款手机的型号为9100 那么先定义手机
class CI9100:public ISamsung
{
public:
CI9100(){}
~CI9100(){}
void Call()
{
cout<<"call somebody with I9100"<<endl;
}
}
//定义生产I9100 的工厂
class CI9100Factory:public IFactory
{
public:
CI9100Factory(){}
~ CI9100Factory(){}
ISamsung * MakePhone()//生产i9100
{
CI9100 * p = new CI9100;
return p;
}
}
当领导要求生产I9100的时候直接让生产9100的工厂生产就行了。
int main()
{
IFactory * pFactory = new CI9100Factory;
ISamsung * p = pFactory.MakePhone();
p->Call();
delete p;
return 0;
}
浙公网安备 33010602011771号