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;
    }
  • 相关阅读:
    C# 中的 ConfigurationManager类引用方法
    添加Word,Excel等dll时如何操作。
    Win7(64位)中IIS配置Access数据库的asp.net程序中出现“未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序”
    sql模糊查询
    Spring中AOP的使用
    MongoDB的孤儿文档是如何产生的
    Docker
    MySql索引优化
    Kafka(分布式流式系统)
    synchronized的底层实现
  • 原文地址:https://www.cnblogs.com/fourmi/p/12074937.html
Copyright © 2011-2022 走看看