#include#include // 产品接口 class Product { public: virtual ~Product() {} virtual std::string Operation() = 0; }; // 具体的产品 class ConcreteProduct1 : public Product { public: std::string Operation() override { return "result of the concrete product 1."; } }; class ConcreteProduct2 : public Product { public: std::string Operation() override { return "result of the concrete product 2."; } }; // 创建者接口 class Creator { public: virtual ~Creator() {} // 返回产品对象的工厂方法 virtual Product *FactoryMethod() const = 0; std::string SomeOperation() const { // 调用工厂方法,创建一个产品对象 Product *product = this->FactoryMethod(); // 使用产品对象 std::string result = "create a product with : " + product->Operation(); // 删除对象 delete product; return result; } }; // 具体的创建者,会重写工厂方法 class ConcreteCreator1 : public Creator { public: Product* FactoryMethod() const override { // 创建对象 return new ConcreteProduct1(); } }; class ConcreteCreator2 : public Creator { public: Product* FactoryMethod() const override { return new ConcreteProduct2(); } }; int main() { Creator *creator1 = new ConcreteCreator1(); std::cout << creator1->SomeOperation() << std::endl; Creator *creator2 = new ConcreteCreator2(); std::cout << creator2->SomeOperation() << std::endl; }



