前言 在我们要使用一个对象时,就必须通过类来实例化对象,也就是需要new一个对象。在new的过程是非常复杂的,要经过读文件->解析文本->创建对象->给属性设值等过
在我们要使用一个对象时,就必须通过类来实例化对象,也就是需要new一个对象。在new的过程是非常复杂的,要经过读文件->解析文本->创建对象->给属性设值等过程。而引入工厂模式,就是将创建类的这个步骤又工厂来帮我们完成,我们只需要去使用工厂里创建好的类即可。在使用工厂时,我们需要让工厂知道我们想要的一个对象,所以我们可以通过传参的方式去告诉工厂我们的需求
定义思想:在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类
优点:
缺点:
适用场景:
由于简单工厂模式不符合开闭原则,所以大佬将该模式从24种设计模式中移除
首先创建一个抽象手机类,指定具体产品手机必须具有指定功能,也就是产品类必须要重写该类中的方法
//抽象手机
class AbstractPhone
{
public:
virtual void ShowName() = 0;
};
具体产品的手机继承抽象手机类并对其方法进行重写
//华为
class Huawei : public AbstractPhone
{
public:
virtual void ShowName()
{
cout << "Huawe Phone" << endl;
}
};
//小米
class Xiaomi : public AbstractPhone
{
public:
virtual void ShowName()
{
cout << "Xiaomi Phone" << endl;
}
};
//苹果
class Apple : public AbstractPhone
{
public:
virtual void ShowName()
{
cout << "Apple Phone" << endl;
}
};
通过传入的参数来确定需要生成哪种手机
//手机工厂
class PhoneFactory
{
public:
static AbstractPhone* CreatePhone(string name)
{
if (name == "huawei")
//...生产细节
return new Huawei;
else if (name == "xiaomi")
//...生产细节
return new Xiaomi;
else if (name == "apple")
//...生产细节
return new Apple;
else
return nullptr;
}
};
测试:
void test()
{
//创建工厂
PhoneFactory* factor = new PhoneFactory;
//创建手机
AbstractPhone* phone;
//指定工厂需要创建的手机
phone = factor->CreatePhone("huawei");
phone->ShowName();
delete phone;
phone = factor->CreatePhone("xiaomi");
phone->ShowName();
delete phone;
phone = factor->CreatePhone("apple");
phone->ShowName();
delete phone;
delete factor;
}
运行截图:
到此这篇关于c++设计模式之简单工厂模式的文章就介绍到这了,更多相关C++简单工厂模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: C++设计模式之简单工厂模式的实现示例
本文链接: https://www.lsjlt.com/news/127606.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0