六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 60|回复: 0

Factory Pattern

[复制链接]

升级  68%

6

主题

6

主题

6

主题

童生

Rank: 1

积分
34
 楼主| 发表于 2013-1-27 04:41:37 | 显示全部楼层 |阅读模式
C:\Documents and Settings\Administrator\桌面\编程\设计模式\Factory.jpg

刚开始学习设计模式,还不是很懂,慢慢来吧,首先应该是Factory Pattern,下面是代码:
Product.h
#ifndef _PRODUCT_H_#define _PRODUCT_H_#include <iostream>using namespace std;class Product{public:    virtual ~Product()=0;protected:    Product();    private:};class ConcreteProductA :public Product{public:    ~ConcreteProductA();    ConcreteProductA();protected:private:};class ConcreteProductB :public Product{public:    ~ConcreteProductB();    ConcreteProductB();protected:private:};#endif


Product.cpp

#include "Product.h"#include <iostream>using namespace std;Product::Product(){}Product::~Product(){}ConcreteProductA::ConcreteProductA(){    cout << "ConcreteProductA....." <<endl;}ConcreteProductA::~ConcreteProductA(){}ConcreteProductB::ConcreteProductB(){    cout << "ConcreteProductB....." <<endl;}ConcreteProductB::~ConcreteProductB(){}

Factory.h

#ifndef FACTORY_H_#define FACTORY_H_#include "Product.h"#include <iostream>using namespace std;class Product;class Factory{public:    virtual ~Factory()=0;    virtual Product* creatProductA()=0;    virtual Product* creatProductB()=0;protected:    Factory();private:};class ConcreteFactory:public Factory{public:    ConcreteFactory();    ~ConcreteFactory();    Product* creatProductA();    Product* creatProductB();protected:private:};#endif

Factory.cpp

#include "Factory.h"#include "Product.h"#include <iostream>using namespace std;Factory::Factory(){}Factory::~Factory(){}ConcreteFactory::ConcreteFactory(){    cout << "ConcreteFactory..."<<endl;}ConcreteFactory::~ConcreteFactory(){}Product* ConcreteFactory::creatProductA(){    return new ConcreteProductA();}Product* ConcreteFactory::creatProductB(){    return new ConcreteProductB();}

main.cpp

#include <iostream>#include "Factory.h"#include "Product.h"using namespace std;int main(){    Factory* factory = new ConcreteFactory();    Product* productA = factory->creatProductA();    Product* productB = factory->creatProductB();    return 0;}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表