class Product
{
public:
virtual ~Product() {}
virtual void DoSomething()=;
}; class ProductA : public Product
{
public:
ProductA() {}
~ProductA() {} virtual void DoSomething();
}; class ProductB : public Product
{
public:
ProductB() {}
~ProductB() {} virtual void DoSomething();
}; class ProductC : public Product
{
public:
ProductC() {}
~ProductC() {} virtual void DoSomething();
}; void ProductA::DoSomething()
{
cout<<"ProductA::DoSomething"<<endl;
} void ProductB::DoSomething()
{
cout<<"ProductB::DoSomething"<<endl;
} void ProductC::DoSomething()
{
cout<<"ProductC::DoSomething"<<endl;
} class Factory
{
public:
virtual ~Factory() {}
virtual Product* CreateProduct()=;
}; class FactoryA : public Factory
{
public:
FactoryA() {}
virtual ~FactoryA() {}
virtual Product* CreateProduct();
}; class FactoryB : public Factory
{
public:
FactoryB() {}
virtual ~FactoryB() {}
virtual Product* CreateProduct();
}; class FactoryC : public Factory
{
public:
FactoryC() {}
virtual ~FactoryC() {}
virtual Product* CreateProduct();
}; Product* FactoryA::CreateProduct()
{
return new ProductA;
} Product* FactoryB::CreateProduct()
{
return new ProductB;
} Product* FactoryC::CreateProduct()
{
return new ProductC;
} #define DESTROY(ptr) if (ptr) { delete ptr; ptr = NULL; } int main(int argc, char *argv[])
{
Factory* pFactory = NULL;
Product* pProduct = NULL; pFactory = new FactoryA;
pProduct = pFactory->CreateProduct();
pProduct->DoSomething(); DESTROY(pFactory);
DESTROY(pProduct); pFactory = new FactoryB;
pProduct = pFactory->CreateProduct();
pProduct->DoSomething(); DESTROY(pFactory);
DESTROY(pProduct); pFactory = new FactoryC;
pProduct = pFactory->CreateProduct();
pProduct->DoSomething(); DESTROY(pFactory);
DESTROY(pProduct); return ;
}

Factory_Method的更多相关文章

  1. 【编程思想】【设计模式】【创建模式creational 】工厂模式factory_method

    Python版 https://github.com/faif/python-patterns/blob/master/creational/factory_method.py #!/usr/bin/ ...

  2. Java设计模式(二) 工厂方法模式

    本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...

  3. Spring笔记(二)Core层

    Spring用一种非入侵的方式来管理程序,模块结构图如下:   .Core层 IOC(控制反转):应用本身程序不负责依赖对象的创建及维护,依赖对象的创建及维护有外设容器负责,即:IOC: DI(依赖注 ...

  4. cglib源码分析(一): 缓存和KEY

    cglib是一个java 字节码的生成工具,它是对asm的进一步封装,提供了一系列class generator.研究cglib主要是因为它也提供了动态代理功能,这点和jdk的动态代理类似. 一. C ...

  5. 【创建型】Abstract Factory模式 & Factory Method模式

    本文主要介绍简单工厂模式与抽象工厂模式.以下如有叙述不当之处,欢迎批评指正,欢迎交流探讨. 一:简单工厂模式 在23种设计模式中,简单工厂模式其实是不在列的,但理解该模式对于抽象工厂模式的思想理解是有 ...

  6. 设计模式——工厂方法模式(C++实现)

    #include <iostream> #include <string> using namespace std; class CProduct { public: ; }; ...

  7. 工厂方法模式-Factory Method(Java实现)

    工厂方法模式-Factory Method 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法让实例化的具体内容交给子类工厂来进行. 本文中的例子是这样的. 生产一个身份证, ...

  8. 「PHP」工厂方法模式

    引言   所属:创建型模式,常用设计模式之一 工厂模式分为:简单工厂模式.工厂方法模式.静态工厂模式.抽象工厂模式. 下面为工厂方法模式. 参考资料: <大话设计模式>程杰   模式概述 ...

  9. spring源码深度解析— IOC 之 默认标签解析(上)

    概述 接前两篇文章  spring源码深度解析—Spring的整体架构和环境搭建  和  spring源码深度解析— IOC 之 容器的基本实现 本文主要研究Spring标签的解析,Spring的标签 ...

随机推荐

  1. 使用redis做pv、uv、click统计

    redis实时统计 设计思路: 1. 前端smarty插件(smarty_function_murl),将网站所有的连接生成一个urlid,后端根据获取的参数将需要的数据存入redis. 2.后端插件 ...

  2. 关于androidManifest.xml的概叙以及intent-filter的详细分析

    AndroidManifest.xml配置文件对于Android应用开发来说是比较细但又很重要的基础知识,本文旨在总结该配置文件中常用到的几个属性,以便日后查阅,至于那些比较细的属性,主要是平时开发比 ...

  3. windows下 定时删除tomcat日志和缓存。可以保留天数

    forfiles /p "e:\Program Files\Tomcat 7.0\logs" /s /m *.log /d -5 /c "cmd /c del @path ...

  4. 【阿里云产品公测】PTS测试 SLB+ECS+RDS组合的DZ论坛负载极限压力,100并发2000页

    作者:阿里云用户woaj01 ​​环境介绍: 1.ECS:1核 1G 5M 杭州 2.RDS:240M  5G  杭州内网 3.SLB:私网实例​ 配置测试环境: 测试脚本: 1.生成参数文件,我的方 ...

  5. 【Linux/Ubuntu学习3】解决ubuntu解压windows生成的zip文件时乱码问题

    在windows上压缩的文件,是以系统默认编码中文来压缩文件.由于zip文件中没有声明其编码,所以linux上的unzip一般以默认编码解压,中文文件名会出现乱码. 虽然2005年就有人把这报告为bu ...

  6. OC 和 swift 小结

    1 什么是 OC 语言? OC 语言即面向对象语言,它扩展了 ANSI C 语言,将 SmallTalk 式的消息传递机制加入到 ANSI C 中.它是苹果 OS 和 iOS 以及相关的 API,Co ...

  7. [UML]UML之开篇

    前言 大学时,学习软件工程时,学到了UML,由于当时接触项目太少,认识不清,再加上毕业后一直忙于coding,很少有时间去真正的认识和学习UML. 现在感觉有必要去回头看看这些东西啦. 什么是UML ...

  8. Entityframework Code First 系列之项目搭建

    Entityframework(以下简称EF)是微软推出的一个ORM(Object Relational Mapping)框架. 优缺点 优点: 易上手,语法简单,查询容易 更新快,不断补足 缺点: ...

  9. canvas基础2--绘制图形

    栅格 绘制矩形 不同于SVG,HTML中的元素canvas只支持一种原生的图形绘制:矩形.所有其他的图形的绘制都至少需要生成一条路径.不过,我们拥有众多路径生成的方法让复杂图形的绘制成为了可能. 首先 ...

  10. freeCodeCamp:Search and Replace

    使用给定的参数对句子执行一次查找和替换,然后返回新句子. 第一个参数是将要对其执行查找和替换的句子. 第二个参数是将被替换掉的单词(替换前的单词). 第三个参数用于替换第二个参数(替换后的单词). 注 ...