欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

工厂方法【设计模式】

程序员文章站 2024-01-05 23:18:23
...

知识点

工厂方法(factory method)

知识内容

定义一个用于创建对象的接口,让子类决定实例化那个类。 Factory Method 使一个类的实例化延迟到其子类。

工厂方法的特点是创建对象的动作由父类完成。但对象的类型不是由父类指定,而是由子类返回。一个子类聚有一个创建动作

示例说明

#include<iostream>

using namespace std;

class Product  //工厂方法创建的对象接口,
{
  public:
   virtual void createProduct()
   {
     cout << "base product..." << endl;
   }
};

class ConcreteProduct: public Product //实现Product接口
{
  public:
    virtual void createProduct()
    {
      cout << "concrete product... " << endl;
    }
};

class Creator  //工厂方法的类
{
  public:
    virtual Product* FactoryMethod()  //工厂方法名,返回Product类的对象
    {
        return new Product();  //定义缺省实现
    }

    void AnOperation()  //可以调用工厂方法创建一个Product对象
    {
      cout << "An operation... " << endl;
      Product* product = FactoryMethod();  //调用工厂方法
      product -> createProduct(); //验证创建的是那个类
    }
};

class ConcreteCreator:public Creator  //工厂方法的具体类
{
  public:
    virtual Product* FactoryMethod()  //重定义工厂方法
    {
        return new ConcreteProduct();  //返回一个ConcreteProduct实例
    } 
};

int main()
{
  Creator* creator = new Creator(); //创建一个工厂方法类
  creator -> AnOperation(); //调用缺省的工厂方法完成操作
  ConcreteCreator* concreteCreator = new ConcreteCreator(); //创建一个具体的工厂方法类
  concreteCreator -> AnOperation(); //调用具体的工厂方法完成操作,和缺省的工厂方法调用的方法是一个
  Creator* creator1 = new ConcreteCreator();
  creator1 -> AnOperation();
  return 0;
}

链接

https://github.com/xierensong/learngit/blob/master/DPattern/6/2.cpp

上一篇:

下一篇: