C++设计模式学习-工厂方法模式-创新互联

图解

在这里插入图片描述

创新互联建站主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、响应式网站、程序开发、网站优化、微网站、微信平台小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都网站制作、成都网站建设、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。理论

将一个大的工厂抽象出来,然后每一个类都有一个对应的具体的工厂

缺点:
类的个数成倍增加(增加一个类,就要增加一个对应的工厂),从而导致类越来越多,增加了维护的成本
增加了系统的抽象性和理解难度

好处:
符合开闭原则
实现了对象创建和使用的分离
系统的可扩展性变得很好,无需修改接口和原类

使用场景:
客户端不知道他所需要的对象的类
抽象工厂类通过其子类来指定创建哪个对象

代码

#includeusing namespace std;

class abstractFruit {public:
    virtual void showName() = 0;
};

class Apple : public abstractFruit {public:
    void showName() override {cout<< "i am apple"<< endl;
    }
};

class Banana : public abstractFruit {public:
    void showName() override {cout<< "i am Banana"<< endl;
    }
};


// 抽象工厂
class AbstractFactory {public:
    virtual abstractFruit* CreateFruit() = 0;
};

//苹果工厂
class AppleFactory : public AbstractFactory {public :
    abstractFruit* CreateFruit() override {return new Apple;
    }
};

//香蕉工厂
class BananaFactory : public AbstractFactory {public :
    abstractFruit* CreateFruit() override {return new Banana;
    }
};


void test01() {AbstractFactory * factory = nullptr;
    abstractFruit* fruit = nullptr;

    factory = new AppleFactory;
    fruit = factory->CreateFruit();
    fruit->showName();
    delete fruit;
    delete factory;

    factory = new BananaFactory;
    fruit = factory->CreateFruit();
    fruit->showName();
    delete fruit;
    delete factory;
}

int main() {test01();

    return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:C++设计模式学习-工厂方法模式-创新互联
文章路径:http://ybzwz.com/article/ipihj.html