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;
    }
    

  • 相关阅读:
    抓取用户openid
    getaccesstoken方法
    https_request请求接口返回数据
    composer安装
    Linux下mysql数据库root无法登录的情况
    nginx安装
    shell脚本采用crontab定时备份数据库日志
    Python之元类详细解析
    Python面向对象之封装、property特性、绑定方法与非绑定方法
    Python之面向对象的组合、多态、菱形问题、子类中重用父类的两种方式
  • 原文地址:https://www.cnblogs.com/shenfei2031/p/1979302.html
Copyright © 2011-2022 走看看