design_patterns/01_simple_factory.cpp
Yuki 91a99e3e25
feat: Simple Factory
Implement demo for simple factory.
2025-04-05 02:11:33 +08:00

45 lines
766 B
C++

#include <iostream>
#include <memory>
using namespace std;
class Shape {
public:
virtual void draw() = 0;
};
class Circle : public Shape {
public:
virtual void draw() override {
cout << "Circle draw" << endl;
}
};
class Square : public Shape {
public:
virtual void draw() override {
cout << "Square draw" << endl;
}
};
class Factory {
public:
unique_ptr<Shape> generate(const string& s) {
if (s == "circle") {
return make_unique<Circle>();
} else if (s == "square") {
return make_unique<Square>();
}
return nullptr;
}
};
int main() {
Factory f;
unique_ptr<Shape> s = f.generate("circle");
s->draw();
s = f.generate("square");
s->draw();
}