• 第七次课程作业


    第七次课程作业

    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

  • 相关阅读:
    atom无法安装插件的解决方法之一
    css3伪类温故知新
    flex 布局笔记
    NPM 无法下载任何包的原因,解决方法
    flex align-content中的描述的“多根轴线的对齐方式”中的“多根轴线”到底是什么
    nodejs express 静态文件的路径
    当函数传入参数是引用类型的几种情况和现象。
    关于NODE NPM 输入命令后没反应的问题
    no input file specified
    获取form提交的返回值
  • 原文地址:https://www.cnblogs.com/qwe1/p/6947048.html
Copyright © 2020-2023  润新知