wordpress 设置404页面,孝感网站seo,html 网站,深圳最出名的50家公司文章目录 一、原型模式基础知识原型模式的结构应用场景 实例拷贝构造函数被调用场景如下#xff1a;典型的应用场景#xff1a; 一、原型模式基础知识
原型模式是一种创建型设计模式#xff0c;其功能为复制一个运行时的对象#xff0c;包括对象各个成员当前的值。而代码又… 文章目录 一、原型模式基础知识原型模式的结构应用场景 实例拷贝构造函数被调用场景如下典型的应用场景 一、原型模式基础知识
原型模式是一种创建型设计模式其功能为复制一个运行时的对象包括对象各个成员当前的值。而代码又能保持独立性。用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象。 主要解决在运行期建立和删除原型。 优点性能提高、避免构造函数的约束。
原型模式的结构
原型接口Prototype Interface通常包含一个克隆自己的方法。 具体原型类Concrete Prototype实现原型接口提供克隆自身的具体实现。 客户端Client让一个原型克隆自身并对克隆体进行修改。
应用场景
原型模式适用于以下情况 创建新对象成本较大如果创建对象的过程非常复杂或者资源消耗较大使用原型模式可以避免这些开销。 需要保留对象的历史状态原型模式可以很容易地复制对象的状态适用于需要回溯对象状态的场景。 当系统需要避免创建多个相同对象时如果系统频繁创建相同或相似的对象使用原型模式可以提高效率。
实例
#include iostream
using namespace std;class ProtoType { // 凡是含有纯虚函数的类叫做抽象类
public:ProtoType(){}~ProtoType() {}virtual ProtoType* CloneFunc() 0; // 纯虚函数
};class ConreteProtoType:public ProtoType
{
public:ConreteProtoType(int imember):_member(imember) {cout 执行ConreteProtoType带参构造函数.\n endl;}~ConreteProtoType() {cout 执行ConreteProtoType析构函数. endl;}// 拷贝构造函数若有指针成员变量要进行实现深拷贝ConreteProtoType(const ConreteProtoType rhs) {_member rhs._member;cout 数据成员_member1 _member endl;}ConreteProtoType* CloneFunc() { // 派生类实现cout 正在处理克隆. endl;cout 数据成员_member2 _member endl;return new ConreteProtoType(*this);}private:int _member;};int main()
{cout main()函数--原型模式开始.\n endl;ConreteProtoType* CloneObjA new ConreteProtoType(88);ConreteProtoType* CloneObjB CloneObjA-CloneFunc();cout endl;delete CloneObjA;CloneObjA nullptr;delete CloneObjB;CloneObjB nullptr;return 0;
}
main函数--原型模式开始
ConcretePrototype带参构造函数
正处理克隆
数据成员_member288
数据成员_member188
ConcretePrototype析构函数
ConcretePrototype析构函数
main函数--原型模式结束拷贝构造函数被调用场景如下
1、用已知对象初始化一个正在被创建的对象调用拷贝构造函数 2、函数形式参数为对象的时候实参对象向形参对象传递调用 拷贝构造函数。 3、函数的返回值为对象的时候当需要获取返回值时调用拷贝 构造函数
典型的应用场景 报表生成在报表系统中用户可以创建并保存各种报表模板当需要生成报表时可以直接克隆这些模板而不需要重新设置复杂的配置信息。 游戏角色复制在游戏开发中可以通过原型模式复制角色快速生成大量相似的游戏对象如士兵、怪物等。 复杂对象的快速创建当对象的创建过程非常复杂或者耗时较长时可以通过原型模式复制已有对象来避免重复的创建过程如从数据库加载大量数据的对象。 对象的深克隆在需要对象副本并且希望副本与原对象完全独立时可以使用原型模式进行深克隆这在对象包含复杂引用结构时非常有用。 原型注册表在某些系统中可以维护一个原型注册表里面存储了各种类型的原型对象。当需要创建对象时直接从注册表中克隆原型对象这样可以提高对象创建的效率。 配置对象的复制在配置管理系统中可以通过原型模式复制配置对象快速生成新的配置实例而不需要重新解析配置文件。 设计模式的动态加载在需要动态加载设计模式对象的情况下可以使用原型模式来创建对象这样可以避免直接实例化类提高系统的灵活性和可扩展性。 用户界面克隆在用户界面设计中可以通过原型模式复制界面元素如按钮、菜单等这样可以快速创建多个相似的界面元素。 数据备份在需要备份大量数据时可以使用原型模式创建数据的副本这样可以避免数据的重复输入提高数据备份的效率。 实验和模拟在科学计算和工程设计中原型模式可以用来复制实验设置或模拟环境以便进行多次独立的实验或模拟。
通过使用原型模式可以提高对象创建的效率减少系统的资源消耗并提高代码的可维护性和可扩展性。