课程作业七

课程作业七

题目描述

请将随机生成数字、表达式的部分设计成:一个Random基类,基类中有random() 方法。并由该基类派生出RandomNumber类、RandomOperation类,继承并覆盖父类方法。
学习简单工厂模式,思考能否将该模式运用到题目的第一点要求中。

作业要求

体会继承和多态的思想
发表一篇博客,博客内容为:提供本次作业的github链接,题目描述的代码部分的解释、简单工厂模式的学习。

什么是简单工厂模式

简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
简单工厂模式中包含的角色及其相应的职责如下:
    工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。
       抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。
       具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。

随机生成数字、表达式的设计

#include <iostream>
#include <ctime>
#include <string>
using namespace std;


class Random
{
public:
	virtual void random() = 0;
	
};


class RandomNumber : public Random
{
private:
	int num;
public:
	void random()
	{
		num = rand() % 10 + 1;
	}
	int getnum()
	{
		return num;
	}
};


class RandomOperation
{
private:
	string sy;
public:
	void random()
	{
		switch (rand() % 4)
		{
		case 0: sy = "+"; break;
		case 1: sy = "-"; break;
		case 2: sy = "*"; break;
		case 3: sy = "/"; break;
		}
	}
	string getsy()
	{
		return sy;
	}
};



int main()
{
	srand(unsigned(time(0)));
	
	......

	return 0;
}
//简单工厂
class Factory
{
public:
	Random *randCreat(int i)
	{
		Random *newCreat;
		switch (i)
		{
			case 0:
				newCreat = new RandomNumber();
				break;
			case 1:
				newCreat = new RandomOperation();
				break;
		}
		return newCreat;
	}	
};
posted @ 2017-06-09 21:07  Dark-Existed  阅读(165)  评论(0编辑  收藏  举报