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(); } };
时间: 2024-04-18 13:30:42 浏览: 117
FactoryMethoodZoo:以Zoo为例的Factory Methood模式
这段代码定义了一个名为 "ConcreteCreator1" 的类,它公开继承自抽象基类 "Creator"。
在 "ConcreteCreator1" 类中,我们重写了基类中的虚函数 "FactoryMethod"。这个函数的返回类型是抽象产品类型 "Product*",尽管实际上返回的是具体产品 "ConcreteProduct1" 的指针。
通过这种方式,"ConcreteCreator1" 类保持了与具体产品类的独立性,它只与抽象产品类 "Product" 进行交互。这符合设计模式中的工厂方法模式,即创建者类负责定义创建对象的接口,具体的对象创建由派生类实现。
在 "FactoryMethod" 中,我们使用关键字 "new" 创建了一个 "ConcreteProduct1" 类的对象,并将其地址返回。这样,通过调用 "FactoryMethod" 函数,我们可以在运行时动态地创建具体产品对象,并将其作为抽象产品类型返回。
这种工厂方法模式的设计允许我们灵活地添加新的具体创建者和具体产品类,同时保持了代码的可扩展性和可维护性。
阅读全文