• 课程作业七


    课程作业七

    题目描述

    请将随机生成数字、表达式的部分设计成:一个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;
    	}	
    };
    
  • 相关阅读:
    Jquery、Ajax实现新闻列表页分页功能
    html中文字溢出处理(text-overflow)
    canvas图像绘制过程中的注意
    问题账户需求分析
    2016年秋季个人阅读计划
    阅读笔记之我们应当怎样做需求分析
    软件工程课个人总结
    人月神话阅读笔记—第四章
    人月神话阅读笔记—第三章
    人月神话阅读笔记—序言及第一、二章
  • 原文地址:https://www.cnblogs.com/darkexisted/p/6973749.html
Copyright © 2020-2023  润新知