C++设计模式-----简单工厂
2012-09-12 13:29
387 查看
1 简单工厂:
目的:(1)封装创建对象的接口Factory类完成的工作(2)延迟了子类的实例化在下面的ConcreteFactory类中,因为只有子类工厂才知道到底该实例化那个类
//product.h
#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.cpp
#include"product.h"
#include<iostream>
using namespace std;
Product::Product()
{
cout<<"Product()"<<endl;
}
Product::~Product()
{
cout<<"~Product()"<<endl;
}
ConcreteProduct::ConcreteProduct()
{
cout<<"ConcreteProduct()"<<endl;
}
ConcreteProduct::~ConcreteProduct()
{
cout<<"~ConcreteProduct()"<<endl;
}
//Factory.h
#ifndef _FACTORY_H
#define _FACTORY_H
class Product;
class Factory
{
public:
virtual~ Factory()=0;
virtual Product* createProduct()=0;
protected:
Factory();
private:
};
class ConcreteFactory:public Factory
{
public:
ConcreteFactory();
virtual~ ConcreteFactory();
Product* createProduct();
protected:
private:
};
#endif
//Factory.cpp
#include"Factory.h"
#include"product.h"
#include<iostream>
using namespace std;
Factory::Factory()
{
cout<<"Factory()"<<endl;
}
Factory::~Factory()
{
cout<<"~Factory()"<<endl;
}
ConcreteFactory::ConcreteFactory()
{
cout<<"ConcreteFactory()"<<endl;
}
ConcreteFactory::~ConcreteFactory()
{
cout<<"~ConcreteFactory()"<<endl;
}
Product* ConcreteFactory::createProduct()
{
return new ConcreteProduct();
}
//main.cpp
#include<iostream>
#include"Factory.h"
#include"product.h"
using namespace std;
void main()
{
Factory *f=new ConcreteFactory();
Product *p=f->createProduct();
delete f;
delete p;
}
目的:(1)封装创建对象的接口Factory类完成的工作(2)延迟了子类的实例化在下面的ConcreteFactory类中,因为只有子类工厂才知道到底该实例化那个类
#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.cpp
#include"product.h"
#include<iostream>
using namespace std;
Product::Product()
{
cout<<"Product()"<<endl;
}
Product::~Product()
{
cout<<"~Product()"<<endl;
}
ConcreteProduct::ConcreteProduct()
{
cout<<"ConcreteProduct()"<<endl;
}
ConcreteProduct::~ConcreteProduct()
{
cout<<"~ConcreteProduct()"<<endl;
}
//Factory.h
#ifndef _FACTORY_H
#define _FACTORY_H
class Product;
class Factory
{
public:
virtual~ Factory()=0;
virtual Product* createProduct()=0;
protected:
Factory();
private:
};
class ConcreteFactory:public Factory
{
public:
ConcreteFactory();
virtual~ ConcreteFactory();
Product* createProduct();
protected:
private:
};
#endif
//Factory.cpp
#include"Factory.h"
#include"product.h"
#include<iostream>
using namespace std;
Factory::Factory()
{
cout<<"Factory()"<<endl;
}
Factory::~Factory()
{
cout<<"~Factory()"<<endl;
}
ConcreteFactory::ConcreteFactory()
{
cout<<"ConcreteFactory()"<<endl;
}
ConcreteFactory::~ConcreteFactory()
{
cout<<"~ConcreteFactory()"<<endl;
}
Product* ConcreteFactory::createProduct()
{
return new ConcreteProduct();
}
//main.cpp
#include<iostream>
#include"Factory.h"
#include"product.h"
using namespace std;
void main()
{
Factory *f=new ConcreteFactory();
Product *p=f->createProduct();
delete f;
delete p;
}
相关文章推荐
- 设计模式C++版:第零式简单工厂
- C++设计模式新解三 简单工厂 工厂模式 抽象工厂
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- c++设计模式之简单工厂模式
- C++设计模式之简单工厂模式
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)zz
- C++设计模式:简单工厂模式
- c++设计模式--简单工厂模式
- 设计模式之简单工厂模式:c++实现
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式之简单工厂,工厂方法模式(c++)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- .C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式 -- 简单工厂模式 -- c++实现
- c++设计模式之简单工厂
- 【C++深入浅出】设计模式学习之简单工厂
- 设计模式的C++实现 24.简单工厂模式
- C++设计模式之简单工厂、工厂模式、抽象工厂
- c++设计模式之简单工厂模式
- 设计模式 简单工厂 c++实现