Factory_Method
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的更多相关文章
- 【编程思想】【设计模式】【创建模式creational 】工厂模式factory_method
Python版 https://github.com/faif/python-patterns/blob/master/creational/factory_method.py #!/usr/bin/ ...
- Java设计模式(二) 工厂方法模式
本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...
- Spring笔记(二)Core层
Spring用一种非入侵的方式来管理程序,模块结构图如下: .Core层 IOC(控制反转):应用本身程序不负责依赖对象的创建及维护,依赖对象的创建及维护有外设容器负责,即:IOC: DI(依赖注 ...
- cglib源码分析(一): 缓存和KEY
cglib是一个java 字节码的生成工具,它是对asm的进一步封装,提供了一系列class generator.研究cglib主要是因为它也提供了动态代理功能,这点和jdk的动态代理类似. 一. C ...
- 【创建型】Abstract Factory模式 & Factory Method模式
本文主要介绍简单工厂模式与抽象工厂模式.以下如有叙述不当之处,欢迎批评指正,欢迎交流探讨. 一:简单工厂模式 在23种设计模式中,简单工厂模式其实是不在列的,但理解该模式对于抽象工厂模式的思想理解是有 ...
- 设计模式——工厂方法模式(C++实现)
#include <iostream> #include <string> using namespace std; class CProduct { public: ; }; ...
- 工厂方法模式-Factory Method(Java实现)
工厂方法模式-Factory Method 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法让实例化的具体内容交给子类工厂来进行. 本文中的例子是这样的. 生产一个身份证, ...
- 「PHP」工厂方法模式
引言 所属:创建型模式,常用设计模式之一 工厂模式分为:简单工厂模式.工厂方法模式.静态工厂模式.抽象工厂模式. 下面为工厂方法模式. 参考资料: <大话设计模式>程杰 模式概述 ...
- spring源码深度解析— IOC 之 默认标签解析(上)
概述 接前两篇文章 spring源码深度解析—Spring的整体架构和环境搭建 和 spring源码深度解析— IOC 之 容器的基本实现 本文主要研究Spring标签的解析,Spring的标签 ...
随机推荐
- 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行--转载
原文地址:http://funine.iteye.com/blog/2220359 (本文所有素材将在文章最后附上) 准备工具exe4j, converticon.com(用于制做.ico格式的图片) ...
- javascript typeof 和 constructor比较
转自:http://www.cnblogs.com/hacker84/archive/2009/04/22/1441500.html http://www.cnblogs.com/siceblue/a ...
- K - Ancient Messages(dfs求联通块)
K - Ancient Messages Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Subm ...
- UISegmentedControl 分段器加载不同的viewcontroller
#import <UIKit/UIKit.h> @interface MJSegmentViewController : UIViewController /** * @brief 设置切 ...
- 9. Android框架和工具之 SlidingMenu(抽屉菜单)
详见为知笔记:Android / Android用户界面优化 / Android SlidingMenu菜单栏程序设计
- 个人总结ANDROID开发事项
theme:none,Holo Dark(全黑),Holo Light(全白),Holo Light width Dark action Bar(全白,活动栏是黑) Create Activity: ...
- Objective-C 高级编程:iOS与OS X多线程和内存管理
<Objective-C 高级编程:iOS与OS X多线程和内存管理> 基本信息 原书名: Pro Multithreading and Memory Management for iOS ...
- C# struct
很困惑,为什么C#会有struct 这样一个关键字.虽然我用C#几年了,但绝少用到此关键字.我在相关书籍上学习C#的时候,看到过struct内容——但C#并不是我的第一入门语言,所以没有那么细致的学习 ...
- 如果AlertView输入框为空,则禁止点击确定按钮
//UIAlertView的代理方法(创建UIAlertView之后,copy此代理方法即可) - (BOOL)alertViewShouldEnableFirstOtherButton:(UIAle ...
- Google Chrome 55 Released – Install on RHEL/CentOS 7/6 and Fedora 25-20
Google Chrome is a freeware web browser developed by Google Inc. Google Chrome team proudly announce ...