21xrx.com
2024-12-22 23:54:32 Sunday
登录
文章检索 我的文章 写文章
C++简单工厂模式
2023-07-02 15:09:46 深夜i     --     --
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实例。

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复