Chinaunix首页 | 论坛 | 博客
  • 博客访问: 164643
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 638
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-26 10:59
个人简介

喜欢coding,因为那是一件伟大的事情,是将无生命的IC赋予灵魂的过程,让我拥有了和上帝一样的成就感。(w1c2g3@163.com)

文章分类

全部博文(60)

文章存档

2017年(7)

2016年(41)

2015年(1)

2014年(4)

2013年(7)

我的朋友

分类: C/C++

2016-10-30 22:43:08

工厂方法模式 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。




  1. #include <iostream>
  2. #include <string>


  3. using namespace std;


  4. struct AbstractProduct {
  5.     virtual void operation() = 0;
  6. };

  7. struct ProductA : public AbstractProduct {
  8.     void operation() {
  9.         cout << "ProductA" << endl;
  10.     }
  11. };

  12. struct ProductB : public AbstractProduct {
  13.     void operation() {
  14.         cout << "ProductB" << endl;
  15.     }
  16. };


  17. struct AbstractFactory {
  18.     virtual AbstractProduct *createProduct() = 0;
  19. };

  20. struct FactoryA : public AbstractFactory {
  21.     AbstractProduct *createProduct() {
  22.         return new ProductA();
  23.     }
  24. };

  25. struct FactoryB : public AbstractFactory {
  26.     AbstractProduct *createProduct() {
  27.         return new ProductB();
  28.     }
  29. };


  30. int main(int argc, char **argv)
  31. {
  32.     AbstractFactory *factoryA = new FactoryA();
  33.     AbstractProduct *p1 = factoryA->createProduct();
  34.     p1->operation();
  35.     delete p1;
  36.     delete factoryA;

  37.     AbstractFactory *factoryB = new FactoryB();
  38.     AbstractProduct *p2 = factoryB->createProduct();
  39.     p2->operation();
  40.     delete p2;
  41.     delete factoryB;

  42.     return 0;
  43. }

阅读(573) | 评论(0) | 转发(0) |
0

上一篇:装饰者模式

下一篇:抽象工厂模式

给主人留下些什么吧!~~