预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

成绩: 实验报告 课程名称:设计模式实验项目:工厂方法及抽象工厂模式姓名:专业:计算机科学与技术班级:学号: 计算机科学与技术学院 实验教学中心 年月日 哈尔滨理工大学计算机科学与技术学院实验教学中心实验报告 哈尔滨理工大学计算机科学与技术学院实验教学中心实验报告 实验项目名称:工厂方法及抽象工厂模式(2学时) 一、实验目的 1.掌握Factory模式与AbstractFactory模式的意图及其代码实现。 2.了解两种模式的区别。 二、实验内容 用C++语言实现Factory模式与AbstractFactory模式。 三、实验步骤 1.理解Factory模式与AbstractFactory模式并构建它们的UML结构图。 2.列出它们的抽象基类和接口函数。 3.用代码演示实现它们。 4.比较Factory模式和AbstractFactory模式。 四、实验结果 五、程序代码 1)Factory.h #ifndefFACTORY_H #defineFACTORY_H classProduct { public: Product(){} virtual~Product(){} }; classConcreateProduct :publicProduct { public: ConcreateProduct(); virtual~ConcreateProduct(); }; classCreator { public: Creator(){} virtual~Creator(){} voidAnOperation(); protected: virtualProduct*FactoryMethod()=0; }; classConcreateCreator :publicCreator { public: ConcreateCreator(); virtual~ConcreateCreator(); protected: virtualProduct*FactoryMethod(); }; #endif 2)Factory.cpp #include"Factory.h" #include<iostream> usingnamespacestd; ConcreateProduct::ConcreateProduct() { std::cout<<"constructionofConcreateProduct\n"; } ConcreateProduct::~ConcreateProduct() { std::cout<<"destructionofConcreateProduct\n"; } voidCreator::AnOperation() { Product*p=FactoryMethod(); std::cout<<"anoperationofproduct\n"; } ConcreateCreator::ConcreateCreator() { std::cout<<"constructionofConcreateCreator\n"; } ConcreateCreator::~ConcreateCreator() { std::cout<<"destructionofConcreateCreator\n"; } Product*ConcreateCreator::FactoryMethod() { returnnewConcreateProduct(); } 3)Main.cpp(测试代码) #include"Factory.h" #include<stdlib.h> intmain(intargc,char*argv[]) { Creator*p=newConcreateCreator(); p->AnOperation(); deletep; system("pause"); return0; } 1)AbstractFactory.h #ifndefABSTRACTFACTORY_H #defineABSTRACTFACTORY_H //抽象基类AbstractProductA,代表产品A的抽象 classAbstractProductA { public: AbstractProductA(){} virtual~AbstractProductA(){}; }; //派生类ConcreateProductA1,继承自AbstractProductA,代表产品A的第一种实现 classConcreateProductA1 :publicAbstractP