工厂模式


#include <stdio.h>
#include <iostream>
using namespace std;
class LeiFeng {
    
public:
    void Sweep(){cout<<"sweep"<<endl;}
    void Wash(){cout<<"wash"<<endl;}
    void BuyRice(){cout<<"byerice"<<endl;}
    
};

class Undergraduate:public LeiFeng {
};

class Volunteer: public LeiFeng {
};

class SampleFactory {
public:
    static LeiFeng * CreateLeiFeng(int type)
    {
        LeiFeng * result = NULL;
        switch (type) {
            case 1:
                result = new Undergraduate();
                break;
                case 2:
                result = new Volunteer();
                break;
            default:
                break;
        }
        return  result;
    }
};


class IFactory {
    
public:
    virtual ~IFactory(){};
    virtual LeiFeng * CreateLeiFeng() = 0;
};

class UndergraduateFactory:public IFactory {
    
public:
    LeiFeng * CreateLeiFeng(){
        return new Undergraduate();
    }
};

class VolunteerFactory:public IFactory{
    
public:
    LeiFeng * CreateLeiFeng(){
        return new Volunteer();
    }
};



void testLesson5(){
    //sample factory
    LeiFeng * student1 = SampleFactory::CreateLeiFeng(graduate);
    LeiFeng * student2 = SampleFactory::CreateLeiFeng(graduate);
    LeiFeng * student3 = SampleFactory::CreateLeiFeng(graduate);
    student1->Wash();
    student2->Sweep();
    student3->Wash();
    
    IFactory * factory = new UndergraduateFactory();
    LeiFeng * student = factory->CreateLeiFeng();
    student->BuyRice();
    student->Sweep();
    student->Wash();

}

重要概念

简单工厂模式的最大优点在于工厂类中包含了必要的逻辑,根据客户端的选择条件动态实例化相关类,对客户端来说,去处了对产品的依赖

工厂方法模式,定义了一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到子类

好处就是能一次性改掉想改的东西,如果一个一个的去创建,那就比较蛋疼了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天学习下最常见的工厂模式,工厂模式细分下来有三大类: 他们的目标都是一样的:封装对象的创建。但是实现手段和使用场...
    西木柚子阅读 6,473评论 7 28
  • 1.接口基础回顾 设计模式六大原则,其中依赖倒转原则,强调我们应该面向接口编程,那什么是接口?接口的作用? 接口如...
    孟婆汤不解渴阅读 4,312评论 0 3
  • 一、工厂模式介绍 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每...
    端木轩阅读 14,397评论 1 20
  • 明透心径,理通靓景。 在体热难受中,凉净行执圆笔画, 希望给大家带来冰心 清神 净恼。 冰静看,再次理解他。 希望...
    春城怡景阅读 3,865评论 33 19
  • 在给出图的定义后第一个问题就是如何遍历图的所有顶点,有两种最基础的图遍历算法。如果给图添加更多的特征和属性,将产生...
    9bc96fd72f8e阅读 10,377评论 0 1

友情链接更多精彩内容