原型模式(clone)——创建型模式
什么是原型模式?
原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需依赖它们所属的类。
总结:需要在继承体系下,实现一个clone接口,在这个方法中以本身作为拷贝源,调用自身拷贝构造函数,并返回新对象地址(用基类指针接收)。
/*************************************************************************
> File Name: 8.Clone.cpp
> Author:
> Mail:
> Created Time: Wed Mar 13 17:55:27 2024
************************************************************************/
#include <iostream>
#include <vector>
using namespace std;
class Shape {
private:
int x, y;
public:
Shape() = default;
Shape(const Shape &obj) {
x = obj.x;
y = obj.y;
}
virtual Shape* clone() = 0;
};
class Rectangle : public Shape {
private:
int width, height;
public:
Rectangle() = default;
Rectangle(const Rectangle &obj) : Shape(obj) {
width = obj.width;
height = obj.height;
}
Shape* clone() override {
return new Rectangle(*this);
}
};
class Circle : public Shape {
private:
int radius;
public:
Circle() = default;
Circle(const Circle &obj) : Shape(obj) {
radius = obj.radius;
}
Shape* clone() override {
return new Circle(*this);
}
};
vector<Shape *> vec;
vector<Shape *> backup;
int main() {
Rectangle *rec = new Rectangle();
vec.push_back(rec);
Circle *cir = new Circle();
vec.push_back(cir);
for (int i = 0; i < vec.size(); ++i) {
backup.push_back(vec[i]->clone());
}
return 0;
}