小工具知识网

当前位置: 首页 > 行业知识 > C++ 设计模式:工厂模式

行业知识

C++ 设计模式:工厂模式

2026-10-23 22:11:43 来源:互联网转载

工厂���式是一种创建型设计模式,通过封装对象的创建过程,提高代码的可维护性、可扩展性,并实现对象的创建与使用的解耦。

()

简单工厂模式: 提供一个工厂类,根据传入的参数来决定创建哪种产品类的实例。这种模式不符合开闭原则,因为每次添加新产品类型都需要修改工厂类。

class products {public:    int money = 0;    virtual void sell() = 0;};class apple :public products {public:    void sell() {        money += 10;    }};class banana :public products {public:    void sell() {        money += 20;    }};class factory {public:    static products* get_product(int d) {        switch (d) {        case 0:return new apple;        case 1:return new banana;        }        return nullptr;    }};

工厂方法模式:定义一个创建产品的接口,由子类决定实例化哪个产品类。每个具体工厂类对应一个具体产品类,符合开闭原则,但客户端需要知道具体工厂类。

()
class products {public:    virtual void sell() = 0;};class factory {public:    virtual products* get_product() = 0;};class apple :public products{public:    void sell(){        std::cout public:    void sell() {        std::cout public:    products* get_product() {        return new apple;    }};class banana_producter:public factory {public:    products* get_product() {        return new banana;    }};public:    virtual void show() = 0;};//抽象产品族class fruit :public products {};class apple :public fruit {public:    void show() {        std::cout public:    void show() {        std::cout };class potato :public vegetable {public:    void show() {        std::cout public:    void show() {        std::cout public:    virtual fruit* get_fruit() = 0;    virtual vegetable* get_vegetable() = 0;};class farm1:public factory {public:    fruit* get_fruit() {        return new apple;    }    vegetable* get_vegetable() {        return new potato;    }};class farm2:public factory {public:    fruit* get_fruit() {        return new banana;    }    vegetable* get_vegetable() {        return new tomato;    }};

上一篇:域名怎么增值?

下一篇:免费手机主机游戏平台