工厂模式属于创建型模式,根据不同的参数创建不同的对象,大致如下:
//基类
class Phone
{
};
//子类
class XiaomiPhone : public Phone
{
};
//子类
class VivoPhone : public Phone
{
};
//工厂
class PhoneFactor
{
public:
Phone* makePhone(int phoneType)
{
if(phoneType == XIAO_MI)
{
return new XiaomiPhone;
}
else if (phoneType == VIVO)
{
return new VivoPhone;
}
return nullptr;
}
};
工厂模式需要提供一个工厂类或者工厂函数来实现对象的创建,下面提供另一种方法实现工厂模式的功能:模板函数
template<class type>
Phone* makePhone()
{
return new type();
}
是不是很简约。
创建对象
Phone* phone = makePhone<XiaomiPhone>();
Phone* phone = makePhone<VivoPhone>();