- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
第 PAGE \* Arabic 24 页
哈尔滨理工大学计算机学院
实验教学中心
《设计模式》实验
TOC \o \h \z \t 标题 2,2 实验指导书 3
实验一 Factory模式与Abstract Factory模式 3
实验二 Adapter模式 9
实验三 Observer模式 12
实验四 Interpreter模式 16
实验指导书
实验一 Factory模式与Abstract Factory模式
[实验目的]
1.掌握Factory模式与Abstract Factory模式的意图及其代码实现。
2.了解两种模式的区别。
[实验内容]
用C++语言实现Factory模式与Abstract Factory模式。
[实验要点及说明]
1、Factory模式
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
#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
{
public:
ConcreateCreator();
virtual ~ConcreateCreator();
protected:
virtual Product* FactoryMethod();
};
#endif
2)Factory.cpp
#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;
}
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(测试代码)
#include Factory.h
#include stdlib
您可能关注的文档
- 商业管理公司市场开发方案.doc
- 商业计划书范例某网站商业计划书.doc
- 商业街可行性研究报告.doc
- 商业街物业管理方案.doc
- 商业金融酒店项目可行性研究报告.doc
- 商业物业管理方案.doc
- 商业物业管理服务方案.doc
- 商业物业管理前期方案.docx
- 商业银行管理学习题.docx
- 商业银行经营管理习题.docx
- springbooot+vue基于java的房屋维修系统毕业论文.doc
- 中国消防救援学院《单片机系统实验》2023-2024学年第一学期期末试卷.doc
- 2025年溧阳纺织化学品项目申请.pptx
- 景区门票包销合同模板(3篇).docx
- 【股票技术指标学习指南】第七章第三节货币需要量的测算.doc
- 2025春 _ 人教版七年级英语下册【unit4】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit5】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit6】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit7】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit8】看音标写单词.doc
文档评论(0)