您的位置:首页 > 编程语言 > C语言/C++

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: