网站网址注册,建设注册证信息网站,珠海建设网站,重庆做营销型网站公司2023年12月6日#xff0c;周三下午
今天又学习了一次简单工厂模式
每多学习一次#xff0c;都会加深对设计模式的理解 目录
什么是简单工厂模式简单工厂模式的优缺点举例说明 什么是简单工厂模式
简单工厂模式#xff08;Simple Factory Pattern#xff09;是一种创建型…2023年12月6日周三下午
今天又学习了一次简单工厂模式
每多学习一次都会加深对设计模式的理解 目录
什么是简单工厂模式简单工厂模式的优缺点举例说明 什么是简单工厂模式
简单工厂模式Simple Factory Pattern是一种创建型设计模式它提供了一种通过使用一个共同的接口来创建不同类型对象的方法。
在简单工厂模式中有一个工厂类负责创建对象而不是直接在客户端代码中实例化对象。客户端只需要通过向工厂类发送请求并传递相应的参数工厂类就会根据参数的不同来创建具体的对象。
简单工厂模式包含以下几个角色
工厂类Factory Class负责根据客户端的请求创建对象并将对象返回给客户端。抽象产品类Abstract Product Class定义了产品的共同接口用于描述具体产品类的共同特征。具体产品类Concrete Product Class实现了抽象产品类的接口具体产品类是由工厂类创建的对象。 简单工厂模式的优缺点
简单工厂模式的优势在于将对象的创建和使用进行了分离客户端只需要关心如何使用对象而无需关心对象的创建过程。这样可以降低代码的耦合性并提供了一定的灵活性如果需要新增或修改产品只需要修改工厂类即可。
然而简单工厂模式也有一些限制。例如当需要创建的产品类型较多时工厂类的代码会变得复杂违反了开闭原则。此外简单工厂模式也无法满足创建对象的变化需求需要借助其他的创建型设计模式如工厂方法模式或抽象工厂模式。 举例说明
#include iostream// 抽象产品类
class Shape {
public:virtual void draw() 0;
};// 具体产品类圆形
class Circle : public Shape {
public:void draw() override {std::cout Draw a circle. std::endl;}
};// 具体产品类矩形
class Rectangle : public Shape {
public:void draw() override {std::cout Draw a rectangle. std::endl;}
};// 工厂类
class ShapeFactory {
public:// 创建具体产品对象的方法Shape* createShape(const std::string type) {if (type circle) {return new Circle();} else if (type rectangle) {return new Rectangle();} else {return nullptr; // 可以根据实际情况返回默认的或者异常处理}}
};int main() {ShapeFactory factory;Shape* shape1 factory.createShape(circle);shape1-draw(); // 输出Draw a circle.Shape* shape2 factory.createShape(rectangle);shape2-draw(); // 输出Draw a rectangle.return 0;
}