您的位置:首页 > 其它

第七次课程作业——派生类与简单工厂的实现

2017-06-08 03:09 211 查看

第七次课程作业——派生类与简单工厂的实现

Part 1. Github地址:

包含简单工厂的.h文件Expression.h和.cpp文件Expression.cpp

Part 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):创建目标,所有创建的对象都充当这个角色的某个具体类的实例。



谈谈个人对简单工厂的理解:

在工厂已经明确生产产品的目的以后,由用户根据自己所需去规定想要工厂所生产的产品,这样提供具体生产类由用户决定然后生产即为简单工厂的生产模式。因此,简单工厂只需要知道具体产品类所对应的参数,即可获取你所想要的产品。然而这样却增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度,遇到大量的具体产品类时,维护起来就不容易了。

以上就是我本次作业实现的所有成果与心得体会,谢谢观赏,以上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: