C++抽象工厂模式代码

#include <iostream>

// 抽象产品:汽车
class Car {
public:
    virtual void drive() = 0;
};

// 具体产品:SUV汽车
class SUV : public Car {
public:
    void drive() {
        std::cout << "Driving SUV car." << std::endl;
    }
};

// 具体产品:轿车
class Sedan : public Car {
public:
    void drive() {
        std::cout << "Driving sedan car." << std::endl;
    }
};

// 抽象产品:手机
class Phone {
public:
    virtual void call() = 0;
};

// 具体产品:安卓手机
class AndroidPhone : public Phone {
public:
    void call() {
        std::cout << "Making a call with Android phone." << std::endl;
    }
};

// 具体产品:苹果手机
class IPhone : public Phone {
public:
    void call() {
        std::cout << "Making a call with iPhone." << std::endl;
    }
};

// 抽象工厂
class AbstractFactory {
public:
    virtual Car* createCar() = 0;
    virtual Phone* createPhone() = 0;
};

// 具体工厂1:生产SUV汽车和安卓手机
class ConcreteFactory1 : public AbstractFactory {
public:
    Car* createCar() {
        return new SUV();
    }

    Phone* createPhone() {
        return new AndroidPhone();
    }
};

// 具体工厂2:生产轿车和苹果手机
class ConcreteFactory2 : public AbstractFactory {
public:
    Car* createCar() {
        return new Sedan();
    }

    Phone* createPhone() {
        return new IPhone();
    }
};

int main() {
    // 使用具体工厂1创建SUV汽车和安卓手机
    AbstractFactory* factory1 = new ConcreteFactory1();
    Car* suv = factory1->createCar();
    Phone* androidPhone = factory1->createPhone();
    suv->drive();
    androidPhone->call();

    // 使用具体工厂2创建轿车和苹果手机
    AbstractFactory* factory2 = new ConcreteFactory2();
    Car* sedan = factory2->createCar();
    Phone* iPhone = factory2->createPhone();
    sedan->drive();
    iPhone->call();

    delete suv;
    delete androidPhone;
    delete factory1;

    delete sedan;
    delete iPhone;
    delete factory2;

    return 0;
}
以下是C++抽象工厂模式的伪代码示例: ```cpp // 抽象产品类 class AbstractProductA { public: virtual void operationA() = 0; }; // 具体产品类A1 class ProductA1 : public AbstractProductA { public: void operationA() override { // 具体操作 } }; // 具体产品类A2 class ProductA2 : public AbstractProductA { public: void operationA() override { // 具体操作 } }; // 抽象产品类 class AbstractProductB { public: virtual void operationB() = 0; }; // 具体产品类B1 class ProductB1 : public AbstractProductB { public: void operationB() override { // 具体操作 } }; // 具体产品类B2 class ProductB2 : public AbstractProductB { public: void operationB() override { // 具体操作 } }; // 抽象工厂类 class AbstractFactory { public: virtual AbstractProductA* createProductA() = 0; virtual AbstractProductB* createProductB() = 0; }; // 具体工厂类1 class ConcreteFactory1 : public AbstractFactory { public: AbstractProductA* createProductA() override { return new ProductA1(); } AbstractProductB* createProductB() override { return new ProductB1(); } }; // 具体工厂类2 class ConcreteFactory2 : public AbstractFactory { public: AbstractProductA* createProductA() override { return new ProductA2(); } AbstractProductB* createProductB() override { return new ProductB2(); } }; // 客户端代码 int main() { AbstractFactory* factory = new ConcreteFactory1(); AbstractProductA* productA = factory->createProductA(); AbstractProductB* productB = factory->createProductB(); productA->operationA(); productB->operationB(); delete productA; delete productB; delete factory; return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值