没有合适的资源?快使用搜索试试~ 我知道了~
常见设计模式(C++)实现和解析
4星 · 超过85%的资源 需积分: 16 47 下载量 5 浏览量
2007-11-14
14:16:24
上传
评论
收藏 1.11MB PDF 举报
温馨提示
试读
98页
pdf文档包括Factory Method模式、Composite模式、Decorator模式、Iterator模式与Strategy模式
资源推荐
资源详情
资源评论
常见设计模式的解析和实现
常见设计模式的解析和实现(C++)之一-Factory 模式
作用:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method
使一个类的实例化延迟到其子类。
UML 结构图:
抽象基类:
1)Product:创建出来的对象的抽象基类.
2)Factory 创建对象的工厂方法的抽象基类.
接口函数:
1)Creator::FactoryMethod:纯虚函数,由派生类实现,创建出对应的 Product.
解析:
在这个模式中,有两个抽象基类,一个是 Product 为创建出来的对象的抽象基类,
一个是 Factory 是工厂的抽象基类,在互相协作的时候都是由相应的 Factory 派
生类来生成 Product的派生类,也就是说如果要新增一种 Product那么也要对应
的新增一个 Factory,创建的过程委托给了这个 Factory.也就是说一个 Factory
和一个 Product 是一一对应的关系.
备注:
设计模式的演示图上把 Factory类命名为 Creator,下面的实现沿用了这个命名.
演示实现:
1)Factory.h
PDF created with pdfFactory trial version www.pdffactory.com
/**************************************************************
******
created: 2006/06/30
filename: Factory.h
author: 李创
http://www.cppblog.com/converse/
purpose: Factory 模式的演示代码
****************************************************************
*****/
#ifndef FACTORY_H
#define FACTORY_H
class Product
{
public:
Product(){}
virtual ~Product(){}
};
class ConcreateProduct
: public Product
{
public:
ConcreateProduct();
virtual ~ConcreateProduct();
};
class Creator
{
public:
Creator(){}
virtual ~Creator(){}
void AnOperation();
protected:
virtual Product* FactoryMethod() = 0;
};
class ConcreateCreator
: public Creator
{
PDF created with pdfFactory trial version www.pdffactory.com
public:
ConcreateCreator();
virtual ~ConcreateCreator();
protected:
virtual Product* FactoryMethod();
};
#endif
2)Factory.cpp
/**************************************************************
******
created: 2006/06/30
filename: Factory.cpp
author: 李创
http://www.cppblog.com/converse/
purpose: Factory 模式的演示代码
****************************************************************
*****/
#include "Factory.h"
#include <iostream>
using namespace std;
ConcreateProduct::ConcreateProduct()
{
std::cout << "construction of ConcreateProduct\n";
}
ConcreateProduct::~ConcreateProduct()
{
std::cout << "destruction of ConcreateProduct\n";
}
void Creator::AnOperation()
{
Product* p = FactoryMethod();
std::cout << "an operation of product\n";
}
PDF created with pdfFactory trial version www.pdffactory.com
ConcreateCreator::ConcreateCreator()
{
std::cout << "construction of ConcreateCreator\n";
}
ConcreateCreator::~ConcreateCreator()
{
std::cout << "destruction of ConcreateCreator\n";
}
Product* ConcreateCreator::FactoryMethod()
{
return new ConcreateProduct();
}
3)Main.cpp(测试代码)
/**************************************************************
******
created: 2006/06/30
filename: Main.cpp
author: 李创
http://www.cppblog.com/converse/
purpose: 测试 Factory 模式的代码
****************************************************************
*****/
#include "Factory.h"
#include <stdlib.h>
int main(int argc,char* argv[])
{
Creator *p = new ConcreateCreator();
p->AnOperation();
delete p;
system("pause");
return 0;
}
PDF created with pdfFactory trial version www.pdffactory.com
常见设计模式的解析和实现(C++)之二-Abstract Fa
ctory 模式
作用:
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
UML 结构图:
抽象基类:
1)ProductA,ProductB:分别代表不同类型的产品,而它们的派生类则是这种产
品的一个实现.
2)AbstractFactory:生产这一系列产品的一个抽象工厂,它的派生类是不同的
实现.
接口函数:
1)AbstractFactory::CreateProductA和 AbstractFactory::CreateProduc
tB:分别是生产不同产品的不同的实现,由各个派生出来的抽象工厂实现之.
解析:
Abstract Factory模式和 Factory最大的差别就是抽象工厂创建的是一系列相
关的对象,其中创建的实现其实采用的就是 Factory 模式的方法,对于某个实现
的有一个派生出来的抽象工厂,另一个实现有另一个派生出来的工厂,等等.
PDF created with pdfFactory trial version www.pdffactory.com
剩余97页未读,继续阅读
资源评论
- 云端看夕阳2019-04-27不错的资源,深入学习C++不可得的一部分知识
- zcypolaris2018-03-21好资源,慢慢啃吧
zhuqinglu
- 粉丝: 48
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功