派生类&简单工厂模式

派生类&简单工厂模式

git链接:
Operation3.1.1

题目描述的代码部分的解释

首先是声明一个Rand类作为父类,然后两个子类RandNumber类和RandOperation类,分别是随机生成0~9的数字和各种符号。
如果加上工厂的话,就是再写个RandFactory类,然后生产不同的两个类对象。(不过我写了工厂,代码中具体却没有实现它,感觉用不到。)

class Rand
{
 public:
    virtual int randNum(); //随机数0-9 所以子类RandNumber可以不用重写该方法了

};
class RandNumber : public Rand
{
public:                   //默认构造析构函数了。

};
class RandOperation : public Rand
{
public:
	int randNum();        //重写生成随机数 对应不同的符号
	char symbol(int i);   //生成符号

};
class RandFactory       // 随机数工厂
{
public:
	Rand* create(int type)   //创建产品 ,由type来决定哪个产品
	{
		Rand* temp = NULL;
		switch(type)
		{
		case 1: temp = new RandNumber();
			break;
		case 2: temp = new RandOperation();
			break;
		default:
			break;
		}
		return temp;
	}

};

简单工厂模式的学习

       对于这个学习的话,我是通过看别人的博客心得,毕竟这也是一种设计模式(工厂模式、抽象工厂模式之类的等等),或者看看官方文档。不过看别人写得文章就已经可以很好的理解了。
所谓的简单工厂模式,通过参数传递来决定要创建哪一个具体产品。
若不需延迟实例化(将实例化放到子类中),则在Factory中增加对应的创建方法即可,如:Product* CreateConcreteProduct(int i);
若需要延迟实例化,则在抽象Factory与具体ConcreteFactory中增加相应方法,在ConcreteFactory中实现方法Product* CreateConcreteProduct(int i)

原文地址:https://www.cnblogs.com/yyf031602438/p/6959250.html