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;
    }
  • 相关阅读:
    print 参数
    note
    action标签的属性说明
    Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
    润乾报表
    javax.naming.NameNotFoundException: Name ZKING is not bound in this Context 的问题
    Myeclipse2013安装svn插件
    Myeclipse2013的优化设置
    Myeclipse解析.classpath文件
    Struts
  • 原文地址:https://www.cnblogs.com/fourmi/p/12074937.html
Copyright © 2011-2022 走看看