C++ 设计模式

1、工厂模式

1.1、简单工厂模式(Simple Factory Pattern)
简单工厂模式并不是GoF(Gang of Four)提出的设计模式之一,但它是工厂模式的一种简单形式,通常用来创建同一层次的对象。在简单工厂模式中,一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。

// 简单工厂示例
class Product {
   
   
public:
    virtual void use() = 0;
    virtual ~Product() {
   
   }
};

class ConcreteProductA : public Product {
   
   
public:
    void use() override {
   
   
        std::cout << "Using ConcreteProductA" << std::endl;
    }
};

class ConcreteProductB : public Product {
   
   
public:
    void use() override {
   
   
        std::cout << "Using ConcreteProductB" << std::endl;
    }
};

class SimpleFactory {
   
   
public:
    Product* createProduct(char type) {
   
   
        switch (type) {
   
   
            case 'A':
                return new ConcreteProductA();
            case 'B':
                return new ConcreteProductB();
            default:
                return nullptr;
        }
    }
};

int main() {
   
   
    SimpleFactory factory;
    Product* productA = factory.createProduct('A');
    if (productA)
        productA->use();

    Product* productB = factory.createProduct('B');
    if (productB)
        productB->use();

    delete productA;
    delete productB;

    return 0;
}

1.2、工厂方法模式(Factory Method Pattern)

工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。换句话说,工厂方法模式将对象的实例化延迟到子类。

// 工厂方法模式示例
class Product {
   
   
public:
    virtual void use() = 0;
    virtual ~Product() {
   
   }
};

class ConcreteProductA : public Product {
   
   
public:
    void use() override {
   
   
        std::cout << "Using ConcreteProductA" << std::endl;
    }
};

class ConcreteProductB : public Product {
   
   
public:
    void use() override {
   
   
        std::cout << "Using ConcreteProductB" << std::endl;
    }
};

class Factory {
   
   
public:
    virtual Product* createProduct() = 0;
    virtual ~Factory() {
   
   }
};

class ConcreteFactoryA : public Factory {
   
   
public:
    Product* createProduct() override {
   
   
        return new ConcreteProductA();
    }
};

class ConcreteFactoryB : 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值