第七次课程作业

第七次课程作业

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

posted on 2017-06-05 21:07  QWE8  阅读(131)  评论(1编辑  收藏  举报

导航