Product* FactoryMethod() const override { return new ConcreteProduct1(); }
时间: 2024-04-21 09:24:09 浏览: 36
这段代码是一个对虚函数 "FactoryMethod" 的实现。通过在函数声明中使用 "override" 关键字,表示该函数是对基类中同名虚函数的重写。
在这个实现中,函数返回一个指向 "Product" 类对象的指针。它使用关键字 "new" 创建了一个 "ConcreteProduct1" 类的对象,并将其地址作为返回值。
这个实现是一个具体的工厂方法,用于创建 "ConcreteProduct1" 类的对象。通过重写基类中的虚函数,派生类可以提供自己特定的对象创建逻辑,并返回相应的派生类对象指针。
需要注意的是,虚函数和纯虚函数都可以被重写,但纯虚函数必须在派生类中进行实现。在这个例子中,通过在派生类中实现工厂方法,我们可以根据具体需求创建不同类型的产品对象。
相关问题
class ConcreteCreator1 : public Creator { /** * Note that the signature of the method still uses the abstract product type, * even though the concrete product is actually returned from the method. This * way the Creator can stay independent of concrete product classes. */ public: Product* FactoryMethod() const override { return new ConcreteProduct1(); } };
这段代码定义了一个名为 "ConcreteCreator1" 的类,它公开继承自抽象基类 "Creator"。
在 "ConcreteCreator1" 类中,我们重写了基类中的虚函数 "FactoryMethod"。这个函数的返回类型是抽象产品类型 "Product*",尽管实际上返回的是具体产品 "ConcreteProduct1" 的指针。
通过这种方式,"ConcreteCreator1" 类保持了与具体产品类的独立性,它只与抽象产品类 "Product" 进行交互。这符合设计模式中的工厂方法模式,即创建者类负责定义创建对象的接口,具体的对象创建由派生类实现。
在 "FactoryMethod" 中,我们使用关键字 "new" 创建了一个 "ConcreteProduct1" 类的对象,并将其地址返回。这样,通过调用 "FactoryMethod" 函数,我们可以在运行时动态地创建具体产品对象,并将其作为抽象产品类型返回。
这种工厂方法模式的设计允许我们灵活地添加新的具体创建者和具体产品类,同时保持了代码的可扩展性和可维护性。
阅读全文