第七次课程作业——派生类与简单工厂的实现
2017-06-08 03:09
211 查看
第七次课程作业——派生类与简单工厂的实现
Part 1. Github地址:
包含简单工厂的.h文件Expression.h和.cpp文件Expression.cppPart 2. 相关代码的实现
//Expression.h文件 class Random //Random基类 { public: virtual int random() = 0; //随机生成的公共接口 virtual ~Random() {}; }; class RandomNumber :public Random //派生出RandomNumber类 { public: int random(); //声明随机生成数字的接口 RandomNumber() {} }; class RandomOperation :public Random //派生出RandomOperation类 { public: int random(); //声明随机生成运算符的接口 RandomOperation() {} }; class RandomFactory //简单随机生成命令的工厂的构建 { public: Random *creatRandom(const string &name) //依据你想要的产品名称进行产品的生产 { if(name=="Randomnum") { return new RandomNumber; } if(name=="RandomOpe") { return new RandomOperation; } } };
//Expression.cpp文件 int RandomNumber::random() //对随机生成数字的接口进行定义 { int d; d = rand() % 10 + 1; return d; } int RandomOperation::random() //对随机生成运算符的接口进行定义 { int n = rand() % 4; char sym; switch (n) { case 0: sym = '+';break; case 1: sym = '-';break; case 2: sym = '*';break; case 3: sym = '/';break; } return sym; } RandomFactory factory; //创建一个执行随机生成命令的工厂 for (int i = 0;i <= 3;i++) { Random* pointNum = factory.creatRandom("Randomnum"); //指出想要的产品"Randomnum" number[i] = pointNum -> random(); //指向生成随机数的接口 } for (int j = 0;j <= 2;j++) { Random* pointOpe = factory.creatRandom("RandomOpe"); //指出想要的产品"RandomOpe" sign[j] = pointOpe -> random(); //指向生成运算符的接口 }
Part 3. 简单工厂的认识与理解
简单工厂模式包含如下角色:
Factory(工厂角色:RandomFactory):负责实现创建所有实例的内部逻辑Product(抽象产品角色:Random):是所创建的所有对象的父类,负责描述所有实例所共有的公共接口
ConcreteProduct(具体产品角色:RandomNumber和RandomOperation):创建目标,所有创建的对象都充当这个角色的某个具体类的实例。
谈谈个人对简单工厂的理解:
在工厂已经明确生产产品的目的以后,由用户根据自己所需去规定想要工厂所生产的产品,这样提供具体生产类由用户决定然后生产即为简单工厂的生产模式。因此,简单工厂只需要知道具体产品类所对应的参数,即可获取你所想要的产品。然而这样却增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度,遇到大量的具体产品类时,维护起来就不容易了。以上就是我本次作业实现的所有成果与心得体会,谢谢观赏,以上。
相关文章推荐
- 编程作业 简单的学生信息处理程序实现[北京大学C++课程]
- Spring--简单使用quartz实现定时作业
- Spring--超简单利用quartz实现定时作业 (转)
- 追MM与设计模式的JAVA实现-简单工厂方法
- Spring--简单使用quartz实现定时作业
- 简单工厂(Single Factory)在JavaScript中简单实现
- 简单的数据库连接工厂实现
- Java课程作业-利用RMI实现文件传输
- 用简单工厂方法设计的数据库查询(JAVA代码实现)
- Spring--简单使用quartz实现定时作业
- 请MM吃饭之简单工厂实现
- [C++]第七次作业:实现一个大整数类BigInt
- c#实现简单工厂—数据库连接
- SPRING中简单的实现定时作业(触发器)
- 操作系统课程设计(二)简单文件系统实现
- 抽象工厂简单实现
- Spring--简单使用quartz实现定时作业
- 简单工厂(Simple Factory)模式的Java实现[00原创]
- 策略模式与简单工厂的C++实现
- vb.net 中通过反射实现简单工厂模式