C++设计模式之Static Factory模式详解

 更新时间:2018年07月20日 16:06:02   作者:YBAidam  
这篇文章主要为大家详细介绍了C++设计模式之Static Factory模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

简单工厂模式并不是GOF提出的23种设计模式中的一种。工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品。

适用场合

1.在程序中,需要创建的对象很多,导致对象的new操作多且杂时,需要使用简单工厂模式;
2.由于对象的创建过程是我们不需要去关心的,而我们注重的是对象的实际操作,所以,我们需要分离对象的创建和操作两部分,如此,方便后期的程序扩展和维护。

1.定义抽象类,也就是接口

class Product
{
public:
 virtual void show()=0;
};

2.定义需要具体实现类,继承抽象类,假设有三个产品

class ProductA:public Product
{
public:
 virtual void show()
 {
 printf("ProductA\n");
 }
};
 
class ProductB:public Product
{
public:
 virtual void show()
 {
 printf("ProductB\n");
 }
};
 
class ProductC:public Product
{
public:
 virtual void show()
 {
 printf("ProductC\n");
 }
};

3.定义工厂类,负责生产产品,这里传入具体的参数来决定生产那个产品

class Factory
{
public:
 Product* CreateProduct(int num)
 {
 switch(num)  //通过传参实例化对象
 {
 case 1:
  return new ProductA();
  break;
 case 2:
  return new ProductB();
  break;
 case 3:
  return new ProductC();
  break;
 default:
  return NULL;
  break;
 }
 }
};

4.实际调用

int main()
{
 Factory* ProductFactory=new Factory();    //首先定有一个工厂对象
 Product* A=ProductFactory->CreateProduct(1); //利用多态与工厂对象来传参决定生产那个产品
 A->show();
 Product* B=ProductFactory->CreateProduct(2);
 B->show();
 Product* C=ProductFactory->CreateProduct(3);
 C->show();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。 

相关文章

  • C++实现教务管理系统

    C++实现教务管理系统

    这篇文章主要为大家详细介绍了C++实现教务管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • c语言实现二叉查找树实例方法

    c语言实现二叉查找树实例方法

    这篇文章主要介绍了一个c语言版的二叉查找树实现,二叉查找树,支持的操作包括:SERACH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR、INSERT、DELETE,大家参考使用吧
    2013-11-11
  • C++算法学习之回溯法的应用

    C++算法学习之回溯法的应用

    这篇文章介绍了C++算法中回溯法的一些应用,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C++ explicit关键字的应用方法详细讲解

    C++ explicit关键字的应用方法详细讲解

    C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?下面就让我们一起来看看这方面的知识吧
    2013-09-09
  • C++如何在一个函数内返回不同类型(三种方法)

    C++如何在一个函数内返回不同类型(三种方法)

    C++ 中要在一个函数内返回不同类型的值,你可以使用 C++17 引入的 std::variant 或 std::any,或者使用模板和多态,下面将分别介绍这些方法,需要的朋友可以参考下
    2023-12-12
  • C++中sort()函数和priority_queue容器中比较函数的区别详析

    C++中sort()函数和priority_queue容器中比较函数的区别详析

    C++中sort()和priority_queue都能自定义比较函数,其中sort()自定义的比较函数比较好理解,priority_queue中自定义的比较函数的效果和sort()是相反的,这篇文章主要给大家介绍了关于C++中sort()函数和priority_queue容器中比较函数的区别的相关资料,需要的朋友可以参考下
    2023-03-03
  • C++中函数模板的用法详细解析

    C++中函数模板的用法详细解析

    所谓函数模板实际上是建立一个通用函数,其涵涵素类型额形参类型不具体指定,用一个虚拟的类型来代表,这个通用函数就称为函数模板
    2013-10-10
  • C语言 表、栈和队列详解及实例代码

    C语言 表、栈和队列详解及实例代码

    这篇文章主要介绍了C语言 表、栈和队列详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • C语言工程文件该如何写(以三子棋游戏为例)

    C语言工程文件该如何写(以三子棋游戏为例)

    工程上写代码应分为多个文件,那么你知道C语言工程文件该如何写吗,本文就以以三子棋游戏为例,介绍一下,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • 在C++中实现aligned_malloc的方法

    在C++中实现aligned_malloc的方法

    这篇文章主要介绍了在C++中实现aligned_malloc的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论