zoukankan      html  css  js  c++  java
  • 设计模式之Factory模式(C++)

    Factory模式具有两大重要的功能:

    (1)、定义创建对象的接口,封装了对象的创建;

    (2)、使具体化类工作延迟到了子类中。

    //Product.h
    #ifndef _PRODUCT_H_
    #define _PRODUCT_H_
    
    class Product
    {
    public:
          virtual ~Product();
    protected:
           Product();
    private:
       
    };
    
    class ConcreteProduct:public Product
    {
    public:
        ConcreteProduct();
        ~ConcreteProduct();
    protected:
    
    private:
    };
    #endif //_PRODUCT_H_
    //Product.cpp
    #include "Product.h"
    #include <iostream>
    using namespace std;
    
    Product::Product()
    {}
    Product::~Product()
    {}
    ConcreteProduct::ConcreteProduct()
    {}
    ConcreteProduct::~ConcreteProduct()
    {}
    //Factory.h
    #ifndef _FACTORY_H_
    #define _FACTORY_H_
    
    class Product;
    class Factory
    {
    public:
        virtual ~Factory();
        virtual Product *CreateProduct() = 0; 
    protected:
        void Factory();
    private:
    };
    
    class ConcreteFactory:public Factory
    {
    public:
        ConcreteFactory();
        ~ConcreteFactory();
        Product * CreateProduct();
    protected:
    private:    
    };
    #endif //_FACTORY_H_
    //Fatory.cpp
    
    #include "Factory.h"
    #include "Product.h"
    
    #include <iostream>
    using namespace std;
    
    Factory::Factory()
    {}
    Factory::~Factory()
    {}
    
    ConcreteFactory::ConcreteFactory()
    {}
    ConcreteFactory::ConcreteFactory()
    {}
    
    Product ConcreteFactory::CreateProduct()
    {
        ConcreteProduct cproduct = new ConcreteProduct;
        return product;
    }
    //main.cpp
    
    #include "Factory.h"
    #include "Product.h"
    
    #include <iostream>
    using namespace std;
    
    int main(int argc,char *argv[])
    {
        Factory *fac = new ConcreteFactory;
        Product *p = fac->CreateProduct();
    
        return 0;
    }

  • 相关阅读:
    openstack o版本自动化脚本安装
    定时关机重启
    centos7.2 安装openstack
    Ubuntu 16.03 apt-get更换为国内阿里云源
    centos7 安装php7+mysql5.7+nginx+redis
    centos7 安装LNMP7
    多个路由器配置静态路由 简单
    puppet笔记
    MySQL备份与恢复实战案例及生产方案
    WAF:web应用防火墙
  • 原文地址:https://www.cnblogs.com/tslDream/p/4456397.html
Copyright © 2011-2022 走看看