#include <iostream>
#include <memory>
class ProductA
{
public:
virtual void show() = 0;
};
class ProductA1 : public ProductA
{
public:
void show()
{
std::cout << "Product A1" << std::endl;
}
};
class ProductA2 : public ProductA
{
public:
void show()
{
std::cout << "Product A2" << std::endl;
}
};
class ProductB
{
public:
virtual void show() = 0;
};
class ProductB1 : public ProductB
{
public:
void show()
{
std::cout << "Product B1" << std::endl;
}
};
class ProductB2 : public ProductB
{
public:
void show()
{
std::cout << "Product B2" << std::endl;
}
};
class Factory
{
public:
virtual std::shared_ptr<ProductA> creat_product_A() = 0;
virtual std::shared_ptr<ProductB> creat_product_B() = 0;
};
class FactoryA : public Factory
{
public:
std::shared_ptr<ProductA> creat_product_A()
{
return std::make_shared<ProductA1>();
}
std::shared_ptr<ProductB> creat_product_B()
{
return std::make_shared<ProductB1>();
}
};
class FactoryB : public Factory
{
public:
std::shared_ptr<ProductA> creat_product_A()
{
return std::make_shared<ProductA2>();
}
std::shared_ptr<ProductB> creat_product_B()
{
return std::make_shared<ProductB2>();
}
};
int main()
{
FactoryA var_1;
FactoryB var_2;
std::shared_ptr<ProductA> ptrA_1 = var_1.creat_product_A();
ptrA_1->show();
std::shared_ptr<ProductB> ptrB_1 = var_1.creat_product_B();
ptrB_1->show();
std::shared_ptr<ProductA> ptrA_2 = var_2.creat_product_A();
ptrA_2->show();
std::shared_ptr<ProductB> ptrB_2 = var_2.creat_product_B();
ptrB_2->show();
return 0;
}
抽象工厂模式
最新推荐文章于 2024-09-15 16:31:23 发布