21xrx.com
2025-07-12 14:09:44 Saturday
文章检索 我的文章 写文章
C++简单工厂模式
2023-07-02 15:09:46 深夜i     15     0
C++ 简单工厂模式 设计模式 对象创建 类型分类

C++简单工厂模式是一种设计模式,它允许我们通过提供工厂函数来创建不同类型的对象,这些对象都具有共同的父类或接口。简单工厂模式可以帮助我们更好的封装和管理对象的创建过程。在C++中,我们可以很容易地实现简单工厂模式,下面通过一个示例来说明。

假设我们有一个图形类Geometry和它的两个子类Circle和Rectangle。我们需要根据用户的输入来创建不同的图形对象。为了实现这个功能,我们可以创建一个名为GeometryFactory的简单工厂类,该类有一个公共静态函数CreateGeometry,该函数可以根据传入的参数来创建相应的对象。

示例代码如下:

class Geometry {
public:
  virtual void draw() = 0;
};
class Circle : public Geometry {
public:
  void draw() override
    std::cout << "Drawing Circle" << std::endl;
  
};
class Rectangle : public Geometry {
public:
  void draw() override
    std::cout << "Drawing Rectangle" << std::endl;
  
};
class GeometryFactory {
public:
  static Geometry* CreateGeometry(const std::string& type) {
    if (type == "circle") {
      return new Circle();
    } else if (type == "rectangle") {
      return new Rectangle();
    } else
      return nullptr;
    
  }
};
int main() {
  Geometry* circle = GeometryFactory::CreateGeometry("circle");
  Geometry* rectangle = GeometryFactory::CreateGeometry("rectangle");
  return 0;
}

这个示例中,Geometry类是一个抽象基类,Circle和Rectangle类是Geometry的具体子类。GeometryFactory类是我们实现简单工厂模式的关键,在CreateGeometry函数中,我们使用if-else语句来根据传入的type参数来创建相应的对象。当type为"circle"时,我们返回Circle的实例;当type为"rectangle"时,我们返回Rectangle的实例;否则返回null。

在main函数中,我们使用GeometryFactory来创建了一个Circle实例和一个Rectangle实例。

在实际应用中,简单工厂模式可以帮助我们更好的封装和管理对象的创建过程。例如,在一个大型的软件系统中,如果我们需要创建许多不同类型的对象,实现简单工厂模式可以让我们更好的组织和管理各种对象,让代码更具可维护性和可扩展性。

  
  

评论区