原型模式

功能:复制一个运行时的对象,包括对象各个成员当前的值。并且能够通过父类的指针来克隆出子类的对象

主要解决:在运行期建立原型

优点:性能提高、避免了构造函数的约束

步骤:

1、定义抽象原型,声明纯虚接口clone()

2、继承重写clone(),clone()内部调用拷贝构造函数创建一个新的对象

3、外部使用时就可以通过调用clone()方法来获得1个与当前对象完全一样的对象

cpp 复制代码
//1、定义抽象原型
class ProtoType {
public:
	ProtoType() = default;
	virtual ~ProtoType() = default;

	//声明clone克隆接口
	virtual ProtoType* clone() = 0;

	//其他接口
	virtual void print() {}

};

//2.具体的原型
class AProtoType :public ProtoType
{
public:
	AProtoType(int data) :m_data(data){}
	~AProtoType() = default;
	//3、实现拷贝构造函数
	AProtoType(const AProtoType& other)
	{
		m_data = other.m_data;
	}

	//4、重写clone函数
	ProtoType* clone() override
	{
		//通过拷贝当前对象迅速获得一个一模一样的对象
		return new AProtoType(*this);
	}

	void print() override
	{
		std::cout << "m_data:" << m_data << std::endl;
	}

private:
	int  m_data;
};


int main()
{
	//外部使用
	
	//创建原型
	ProtoType* a = new AProtoType(3);

	//调用clone方法快速获取一个一模一样的对象
	//并且是通过父类的指针进行的克隆
	ProtoType* clone = a->clone();

	clone->print();

	delete a;
	delete clone;
	
	return 0;
}
相关推荐
geovindu8 小时前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
Seven凹凸Man13 小时前
WorkBuddy之产品经理原型设计及PRD实战
ai·原型模式
ttod_qzstudio2 天前
【软考设计模式】原型模式:“克隆“对象与深拷贝、浅拷贝精讲
设计模式·原型模式
希冀1235 天前
【JavaScript】Javascript—JS进阶—Day03
开发语言·javascript·原型模式
想吃火锅100524 天前
【前端手撕】instanceof
前端·javascript·原型模式
UXbot24 天前
帮助企业低门槛开展AI应用开发的平台推荐
前端·低代码·ui·交互·产品经理·原型模式·web app
UXbot25 天前
如何选择适合公司项目的UI设计工具?企业选型指南
前端·低代码·ui·团队开发·原型模式·设计规范·web app
UXbot25 天前
原型设计工具如何帮助新人快速进入产品行业?
前端·低代码·ui·交互·团队开发·原型模式·web app
sunny.day1 个月前
js原型与原型链
开发语言·javascript·原型模式·js原型链
UXbot1 个月前
AI网页开发工具能替代工具吗?5大平台对比
前端·人工智能·低代码·ui·原型模式·web app