派生类&简单工厂模式
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)