zoukankan      html  css  js  c++  java
  • 第七次课程作业——派生类与简单工厂的实现

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

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

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

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

    以上就是我本次作业实现的所有成果与心得体会,谢谢观赏,以上。

  • 相关阅读:
    Redis(八)理解内存
    Redis(七)Redis的噩梦:阻塞
    Redis(六)复制
    Redis(五)持久化
    笔试面试经典问题
    两个栈实现一个队列
    单链表相关操作
    我的笔记本
    10进制正整数转4位定长的36进制字符串
    微软2016校园招聘在线笔试之Magic Box
  • 原文地址:https://www.cnblogs.com/S031602219/p/6960733.html
Copyright © 2011-2022 走看看