派生类&简单工厂模式
git链接:
题目描述的代码部分的解释
首先是声明一个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)