第七次课程作业
第七次课程作业
GIT链接
#include<iostream>
#include<string>
#include<ctime>
#include<cstdlib>
using namespace std;
class Random{
public:
virtual void random()=0;
virtual void display()=0;
virtual ~Random();
};
class RandomNumber:public Random{
public:
void random(){
srand(time(0));
random1=rand()%10;
random2=rand()%10;
random3=rand()%10;
random4=rand()%10;
}
void display(){
cout<<"random1="<<random1<<endl<<"random2="<<random2<<endl<<"random3="<<random3<<endl<<"random4="<<random4<<endl;
}
private:
double random1,random2,random3,random4;
};
class RandomOperation:public Random{
public:
char s(int a){
if(a==0)return '+';
if(a==1)return '-';
if(a==2)return '*';
if(a==3)return '/';
return 0;
}
void random(){
srand(time(0));
sign1=rand()%4;
sign2=rand()%4;
sign3=rand()%4;
}
void display(){
cout<<"sign1="<<s(sign1)<<endl<<"sign2="<<s(sign2)<<endl<<"sign3="<<s(sign3)<<endl;
}
private:
int sign1,sign2,sign3;
};
class creatRandom{
public:
static Random *factory(string ID)
{
if(ID=="Number")return new RandomNumber();
if(ID=="Operation")return new RandomOperation();
return 0;
}
};
int main(){
creatRandom *fy=new creatRandom; //创建工厂
Random *rn=fy->factory("Number"); //创建产品
Random *ro=fy->factory("Operation"); //创建产品
//产品展示
rn->random();
rn->display();
ro->random();
ro->display();
}
上面是我的代码。类继承部分没什么好解释的,代码里有一些简单工厂的应用,但实际上我还不是非常理解。
在我看来,简单工厂是一种编码的思路,运用到了类的继承与派生,还有一点比较新奇,就是把new对象封装起来,
这样用起来会比较系统和方便,不过感觉有一个缺点,好像只能用无参构造方法,有参和无参放一起会比较麻烦,只能
把对象的赋值用类中的其他方法赋值。
c++简单工厂
附上我看c++简单工厂链接 HERE