设计本官方网站下载,网站推广公司兴田德润,wordpress 仿牛杂,泉州网站设计5. 原型模式 – 复制粘贴#xff0c;一摸一样
简介 原型模式#xff08;Prototype Pattern#xff09;是一种创建型设计模式#xff0c;其主要目的是通过复制现有对象来创建新的对象#xff0c;而无需从头开始构建。 使用场景 它通常用于以下情况#xff1a; 当一个系统…5. 原型模式 – 复制粘贴一摸一样
简介 原型模式Prototype Pattern是一种创建型设计模式其主要目的是通过复制现有对象来创建新的对象而无需从头开始构建。 使用场景 它通常用于以下情况 当一个系统需要独立于其类型的对象时它可以从已有的对象克隆出新的实例而不是通过构造函数创建。当创建一个对象的过程比复制一个现有对象更昂贵时原型模式可以提高性能。 原型模式的关键思想是创建一个原型对象然后根据该原型对象创建新的对象。这个原型对象通常是一个已经存在并配置好的对象它包含了所需的初始状态和属性。新对象从原型对象复制其状态和属性以便于快速创建多个相似的对象。 实现方式 在实现原型模式时通常有两种方式 浅拷贝Shallow Copy在浅拷贝中只复制对象本身以及对象中的基本数据类型属性但不会复制对象引用的其他对象。这意味着新对象和原型对象会共享一些对象引用如果修改了这些共享引用指向的对象会影响到原型对象和克隆对象。深拷贝Deep Copy在深拷贝中不仅复制对象本身和基本数据类型属性还会递归复制对象引用的其他对象以确保新对象和原型对象之间没有共享的引用。 优点和注意事项 原型模式的优点包括 提高性能避免了重复创建对象时的昂贵初始化过程。简化对象创建可以通过复制现有对象来创建新对象无需了解对象的构造细节。支持多态性克隆操作可以用于创建子类对象。 需要注意的是原型模式在某些情况下可能会引入复杂性特别是在对象包含循环引用或大量子对象的情况下。因此在使用原型模式时需要小心处理这些情况。 总之原型模式是一种有助于创建对象的设计模式它通过复制现有对象来创建新对象提供了一种灵活、高效的方式来管理对象的创建和初始化。 实现 实现深拷贝方式主要是写一个clone方法 // 原型模式
// 时间2024-10-29
// 作者conceal
#include iostream
#include string
using namespace std;// 原型类
class Prototype
{
public:virtual Prototype *clone() 0;virtual void show() 0;
};// 具体原型类
class ConcretePrototype : public Prototype
{
public:ConcretePrototype(const string s){m_str s;}Prototype *clone(){return new ConcretePrototype(*this);}void show(){cout m_str endl;}private:string m_str;
};int main()
{Prototype *p new ConcretePrototype(A);Prototype *p1 p-clone();p-show();p1-show();delete p;delete p1;return 0;
}
输出
A
A