標籤:
Factory模式具有兩大重要的功能:
(1)、定義建立對象的介面,封裝了對象的建立;
(2)、使具體化類工作延遲到了子類中。
//Product.h#ifndef _PRODUCT_H_#define _PRODUCT_H_class Product{public: virtual void ~Product();protected: void Product();private: }class ConcreteProduct:public Product{public: void ConcreteProduct(); void ~ConcreteProduct();protected:private:}#endif //_PRODUCT_H_
//Product.cpp#include "Product.h"#include <iostream>using namespace std;void Product::Product(){}void Product::~Product(){}void ConcreteProduct::ConcreteProduct(){}void ConcreteProduct::~ConcreteProduct(){}
//Factory.h#ifndef _FACTORY_H_#define _FACTORY_H_class Product;class Factory{public: virtual void ~Factory(); virtual Product *CreateProduct() = 0; protected: void Factory();private:};class ConcreteFactory:public Factory{public: void ConcreteFactory(); void ~ConcreteFactory(); Product * CreateProduct();protected:private: }#endif //_FACTORY_H_
//Fatory.cpp#include "Factory.h"#include "Product.h"#include <iostream>using namespace std;void Factory::Factory(){}void Factory::~Factory(){}void ConcreteFactory::ConcreteFactory(){}void 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;}
設計模式之Factory模式(C++)