设计模式[21]-Factory Method

简介:

Type: Creational

Factory Method: 定义一个创建对象的接口,但是让子类决定实例化哪个类。新增加一个产品的时候,只需派生一个该类型的工厂而无需修改原来的代码。每个具体工厂只负责返回一种产品类。是最典型的模板方法模式(Templete Method pattern)应用。

#include <iostream>  
using namespace std;  

class Product{};  

class ConcreteProduct: public Product  
{  
public:  
    ConcreteProduct()  
    {  
        cout<<"ConcreteProduct"<<endl;  
    };  
};  

class Creator  
{  
public:  
    virtual Product* factoryMethod() = 0;  
};  

class ConcreteCreator: public Creator  
{  
public:  
    Product* factoryMethod()  
    {  
        cout<<"ConcreteCreator decide which class to instantiate"<<endl;  
        return new ConcreteProduct;  
    };  
};  

int main()  
{  
    Creator* pCreator = new ConcreteCreator;  
    Product* pProduct = pCreator->factoryMethod();  
    system("pause");  
}; 

目录
相关文章
|
设计模式 算法
设计模式9 - 模板方法模式【Template Method Pattern】
设计模式9 - 模板方法模式【Template Method Pattern】
39 0
|
7月前
|
设计模式 Java
【设计模式】JAVA Design Patterns——Abstract Factory(抽象工厂模式)
【设计模式】JAVA Design Patterns——Abstract Factory(抽象工厂模式)
|
3月前
|
设计模式
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
7月前
|
设计模式 Java 容器
【设计模式】JAVA Design Patterns——Async Method Invocation(异步方法调用模式)
【设计模式】JAVA Design Patterns——Async Method Invocation(异步方法调用模式)
|
7月前
|
设计模式
设计模式之工厂 Factory
设计模式之工厂 Factory
57 1
|
7月前
|
设计模式
设计模式(二)工厂方法模式(Factory Method)
设计模式(二)工厂方法模式(Factory Method)
35 0
|
7月前
|
设计模式 算法 Java
【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)
【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)
|
设计模式 Java 程序员
认真学习设计模式之工厂模式(Factory Pattern)
认真学习设计模式之工厂模式(Factory Pattern)
65 0
|
设计模式 Java
设计模式6 - 抽象工厂模式【Abstract Factory Pattern】
设计模式6 - 抽象工厂模式【Abstract Factory Pattern】
38 0
|
设计模式
设计模式5 - 工厂方法模式【Factory Method Pattern】
设计模式5 - 工厂方法模式【Factory Method Pattern】
35 0