← 返回博客列表

模式特点

定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

类图

类图

应用场景

示例代码(C++)

// 抽象产品
class Connection {
public:
    virtual ~Connection() = default;
    virtual void connect() = 0;
};

// 具体产品
class MySQLConnection : public Connection {
public:
    void connect() override { std::cout << "MySQL connected" << std::endl; }
};

class SQLiteConnection : public Connection {
public:
    void connect() override { std::cout << "SQLite connected" << std::endl; }
};

// 抽象工厂
class ConnectionFactory {
public:
    virtual Connection* createConnection() = 0;
    virtual ~ConnectionFactory() = default;
};

// 具体工厂
class MySQLFactory : public ConnectionFactory {
public:
    Connection* createConnection() override { return new MySQLConnection(); }
};