zoukankan      html  css  js  c++  java
  • 设计模式-工厂模式(Factory)(创建型模式)

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码

    //Product.h

    #pragma once
    class Product {
    public:
        virtual ~Product() = 0;
    protected:
        Product();
    private:
    };
    class ConcreateProduct:public Product
    {
    public:
        ConcreateProduct();
        ~ConcreateProduct();
    private:
    protected:
    };

    //Product.cpp

    #include"Product.h"
    #include<iostream>
    
    Product::Product()
    {
    
    }
    
    Product::~Product()
    {
    
    }
    
    ConcreateProduct::ConcreateProduct()
    {
        std::cout << "ConcreateProduct" << std::endl;
    }
    ConcreateProduct::~ConcreateProduct()
    {
    
    }

    //Factory.h

    #pragma once
    class Product;
    class Factory {
    public:
        virtual ~Factory() = 0;
        virtual Product* CreateProduct() = 0;
    protected:
        Factory();
    private:
    };
    
    class ConcreateFactory:public Factory {
    public:
        ConcreateFactory();
        ~ConcreateFactory();
        Product* CreateProduct();
    protected:
    private:
    
    
    };

    //Factory.cpp

    #include"Factory.h"
    #include"Product.h"
    #include<iostream>
    
    Factory::Factory(){}
    Factory::~Factory(){}
    ConcreateFactory::ConcreateFactory()
    {
        std::cout << "ConcreateFactory" << std::endl;
    }
    ConcreateFactory::~ConcreateFactory(){}
    Product* ConcreateFactory::CreateProduct()
    {
        return new ConcreateProduct();
    }

    //main.cpp

    #include"Factory.h"
    #include"Product.h"
    #include<iostream>
    
    int main(int args, char* argv[])
    {
        Factory* fac = new ConcreateFactory();//将类的具体化延迟到了子类。
        Product* pro = fac->CreateProduct();//将类中的对象进行了封装。
        Product* pro1 = fac->CreateProduct();
        return 0;
    }
  • 相关阅读:
    JS元素分组统计
    并发工具类
    【Spring-Cloud】mall eureka微服务模块建立
    【Spring-Cloud】mall父工程建立
    【MySQL】创建函数和存储过程,批量插入大数据
    【JAVA】http 状态
    【JAVA】如何写好代码
    【Docker】dockerfile,支持jdk8、 sshd、 python3.6
    【Hadoop】MapperReduce WordCount 代码示例
    【Hadoop】YARN 完全分布式配置
  • 原文地址:https://www.cnblogs.com/fourmi/p/12074937.html
Copyright © 2011-2022 走看看