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

  • 相关阅读:
    precmd:6: job table full or recursion limit exceeded
    Logs
    vue路由的使用(二)
    vue路由的使用(一)
    vue项目中正确引用jquery
    vue中使用Mint-UI移动端组件库
    HTML5表单、一些新增的输入类型以及为不支持新特性的浏览器提供解决方案
    CSS3过渡、变形、动画(二)
    CSS3过渡、变形、动画(一)
    CSS3之背景渐变
  • 原文地址:https://www.cnblogs.com/shenfei2031/p/1979302.html
Copyright © 2011-2022 走看看