zoukankan      html  css  js  c++  java
  • [创建型模式] Factory

    Factory.h

    //
    //  Factory.h
    //  Factory
    //
    //  Created by Cheney Shen on 11-2-20.
    //  Copyright 2011年 __MyCompanyName__. All rights reserved.
    //
    
    #ifndef _FACTORY_H_
    #define _FACTORY_H_
    
    class Product;
    
    class Factory
    {
        public:
        virtual ~Factory();
        
        virtual Product* CreateProduct()=0;
        
        protected:
        Factory();
        
        private:
        
    };
    
    class ConcreteFactory:public Factory
    {
        public:
        
        ~ConcreteFactory();
        
        ConcreteFactory();
        
        Product* CreateProduct();
        
        protected:
        
        private:
        
    };
    
    #endif //~_FACTORY_H_
    

    Factory.cpp

    //
    //  Factory.cpp
    //  Factory
    //
    //  Created by Cheney Shen on 11-2-20.
    //  Copyright 2011年 __MyCompanyName__. All rights reserved.
    //
    
    #include "Factory.h"
    #include "Product.h"
    
    #include <iostream>
    using namespace std;
    
    Factory::Factory()
    {
        
    }
    
    Factory::~Factory()
    {
        
    }
    
    ConcreteFactory::ConcreteFactory()
    {
        cout<<"ConcreteFacotry..."<<endl;
    }
    
    ConcreteFactory::~ConcreteFactory()
    {
        
    }
    
    Product* ConcreteFactory::CreateProduct()
    {
        return new ConcreteProduct();
    }
    

    Product.h

    //
    //  Product.h
    //  Factory
    //
    //  Created by Cheney Shen on 11-2-20.
    //  Copyright 2011年 __MyCompanyName__. All rights reserved.
    //
    
    #ifndef _PRODUCT_H_
    #define _PRODUCT_H_
    
    class Product
    {
        public:
        virtual ~Product()=0;
        
        protected:
        Product();
        
        private:
        
        
    };
    
    class ConcreteProduct : public Product
    {
        public:
        ~ConcreteProduct();  
        
        ConcreteProduct();
        
        protected:
        
        private:
        
    };
    #endif  // ~_PRODUCT_H_
    

    Product.cpp

    //
    //  Product.cpp
    //  Factory
    //
    //  Created by Cheney Shen on 11-2-20.
    //  Copyright 2011年 __MyCompanyName__. All rights reserved.
    //
    
    #include "Product.h"
    
    #include <iostream>
    using namespace std;
    
    Product::Product()
    {
        
    }
    
    Product::~Product()
    {
        
    }
    
    ConcreteProduct::ConcreteProduct()
    {
        cout<<"ConcreteProduct..."<<endl;
    }
    
    ConcreteProduct::~ConcreteProduct()
    {
        
    }
    

    main.cpp

    //
    //  main.cpp
    //  Factory
    //
    //  Created by Cheney Shen on 11-2-20.
    //  Copyright 2011年 __MyCompanyName__. All rights reserved.
    //
    
    #include "Factory.h"
    #include "Product.h"
    
    #include <iostream>
    using namespace std;
    
    int main (int argc, const char * argv[]) {
    
        Factory* fac = new ConcreteFactory();
        Product* p = fac->CreateProduct();
        return 0;
    }
    

  • 相关阅读:
    python tarfile模块基本使用
    Python shutil模块
    python的gzip库使用方法
    python的gzip库使用方法
    python的gzip库使用方法
    linux 下查看文件修改时间,访问时间,状态改变时间
    linux 下查看文件修改时间,访问时间,状态改变时间
    linux 下查看文件修改时间,访问时间,状态改变时间
    mysqldump使用
    windows 7环境下配置oracle 11g 客户端
  • 原文地址:https://www.cnblogs.com/shenfei2031/p/1979302.html
Copyright © 2011-2022 走看看