工厂模式

来源:互联网 发布:中学生编程竞赛 编辑:程序博客网 时间:2024/04/20 20:03

用处:隐藏了对象创建的细节,只需要知道对象的类型,就可以用对应的工厂子类创建产品。用户看到和使用的只是一个抽象产品,而无需关心到底返回了那个子类。

关键代码:将产品的创建延迟(交给)到子类; 返回的是一个抽象产品

优点:遵循了开闭原则

缺点:每增加一个新的产品,就需要新增一个子类,产品多时,维护量大。

代码:

#include <cstdio>#include <stack>#include <set>#include <iostream>#include <string>#include <vector>#include <queue>#include <list>#include <functional>#include <cstring>#include <algorithm>#include <cctype>#include <string>#include <map>#include <iomanip>#include <cmath>#include <time.h>#define LL long longusing namespace std;class Product{public:virtual void Show() = 0;};class ProductA : public Product{public:void Show(){cout<< "I'm ProductA"<<endl;}};class ProductB : public Product{public:void Show(){cout<< "I'm ProductB"<<endl;}};class Foctory{public:        virtual Product* createProductor()=0;};class FoctorA:public Foctory{public:        Product* createProductor()        {                return new ProductA();        }};class FoctorB:public Foctory{public:        Product* createProductor()        {                return new ProductB();        }};Product* getProductor(Foctory *f){        if (f != NULL)                return f->createProductor();        delete f;}int main(){        Product *a = getProductor(new FoctorA);        a->Show();        Product *b = getProductor(new FoctorB);        b->Show();}


0 0