• 派生类&简单工厂模式


    派生类&简单工厂模式

    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)

  • 相关阅读:
    Sunnypig闯三角关
    送给圣诞夜的贺卡
    uva 1592(NEERC 2009 STL)
    uva 297(传递闭包 WF 1996)
    hdu 4190(二分)
    uva 3592 (MST, kruskal)
    uva 11997 (基础数据结构)
    hdu 2680 (Dijkstra)
    hdu 4568(状态压缩dp)
    hdu 4582 (树上的贪心)
  • 原文地址:https://www.cnblogs.com/yyf031602438/p/6959250.html
Copyright © 2020-2023  润新知