创建型设计模式-原型模式

C++创建型设计模式之 原型模式 对于较复杂的类型,我们在构造一个对象时当然可以用前面讲到的构造器模式或工厂模式来作为获取的方法,但在我们已知一个对象A和另一个对象B只有很小一部分的属性不同时,我们肯定会希望给A对象拷贝一份作为B,再将B对象相应的属性设置正确就行了。比如一对双胞胚姐妹,只有名字不同,在填完姐姐信息后,复制一份后再将名字修改成妹妹的便大功告成。根据原型模式的目的,关键的任务就是拷贝,但方法可不只有重写虚接口 clone() 一种。 阅读详情

原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,甚至是复杂对象,而又无需使代码依赖它们所属的类。
在这里插入图片描述

Shape:抽象原型类,声明具备clone能力,抽象原型类的作用是规范化克隆方法的使用,确保每个具体的原型类都有克隆方法,并且在运行时可以通过该方法来动态地创建新对象,例如java中的Cloneable接口
Rectangle/Circle:具体原型类,他实现抽象类中声明的克隆方法,在克隆方法中返回自己的克隆对象

代码示例:
抽象原型类:Shape

@Data
public abstract class Shape implements Cloneable {
    private String type;

    @Override
    public Shape clone() {
        Shape clone = null;
        try {
            clone = (Shape) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return clone;
    }
}

具体原型类:Rectangle

@Data
public class Rectangle extends Shape {
    private int length;

    private int width;

    public Rectangle(int length,int width) {
        this.length = length;
        this.width = width;
        setType("Rectangle");
    }
}

具体原型类:Circle

@Data
public class Circle extends Shape {
    private int radius;

    public Circle(int radius) {
        this.radius = radius;
        setType("Circle");
    }

}

运行示例:

    public static void main(String[] args) {
        Shape rectangle = new Rectangle(10,5);
        Shape rectangleClone = rectangle.clone();
        System.out.println(rectangle);
        System.out.println(rectangleClone);


        Shape circle = new Circle(10);
        Shape circleClone = circle.clone();
        System.out.println(circle);
        System.out.println(circleClone);
    }

在这个示例中,Shape 是原型接口,它实现了Cloneable接口,此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口,你可以任意定义实现类的方法名,如cloneA或者cloneB,因为此处的重点是super.clone()这句话,super.clone()调用的是Object的clone()方法。
Rectangle 和 Circle 是具体的原型类。

优点:

  • 减少对象的创建时间:避免了重复的初始化操作,直接通过复制现有对象进行创建,提高了对象创建的效率。
  • 简化对象创建过程:不需要关注对象的具体创建过程,只需克隆一个现有对象即可。

缺点:

  • 深克隆问题:如果对象中含有引用类型的成员变量,需要实现深克隆才能保证克隆对象和原对象的引用类型不相互影响。

适用场景:
当需要创建一个对象,但创建过程复杂或者依赖于现有对象时,可以考虑使用原型模式。

Java创建型设计模式-原型模式 原型模式是一种创建型设计模式,‌它允许通过复制一个已经存在的对象来创建一个新的对象,‌而无需重新实例化。‌这种模式特别适用于那些需要创建类似对象的情况,‌可以避免重复的代码和资源浪费。‌原型模式的核心在于提供一个原型对象,‌通过这个原型对象来生成其他对象,‌而不需要知道这些对象的类结构。‌在本文,我们学习了Java的一种创建型设计模式原型模式,知道它拥有原型接口具体原型类客户端和克隆方法四个角色,还阐述了原型模式的使用场景,以及呈现了原型模式的代码示例,相信大家应该对原型模式不陌生了!! 阅读详情

相关推荐

设计模式(四)原型模式Prototype(创建型)

设计模式(四)原型模式Prototype 1. 概述 我们都知道,创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑是一种非常有效的方式,快速的创建一个新的对象。 例子1:孙悟空拔下一嘬猴毛,轻轻一吹就会变出好多的孙悟空来。 例.....................

黄规速博客:学如逆水行舟,不进则退 2万+

设计模式 - 创建型 - 原型模式(Prototype Pattern)

原型模式是一种创建型设计模式,通过克隆现有对象高效生成新实例,适用于高成本对象创建或动态配置场景。其核心分为抽象原型、具体原型和客户端三个角色,支持浅克隆(共享引用)和深克隆(完全独立)两种实现方式。相比工厂模式,原型更适合复杂对象构造和性能优化场景,但深克隆实现较复杂。典型应用包括Java的Cloneable接口、Spring原型Bean及游戏角色复制。该模式显著提升对象创建效率,但需权衡内存管理与实现复杂度。

csdn_tom_168的博客 936

WRF-BEM相关参数说明

本参数适用于WRF-BEM模拟武汉市气候。

m0_60013472的博客 1896

设计模式 创建型 原型模式(Prototype Pattern)与 常见技术框架应用 解析

原型模式(Prototype Pattern)是一种创建型设计模式,其核心思想在于通过复制现有的对象(原型)来创建新的对象,而非通过传统的构造函数或类实例化方式。这种方式在需要快速创建大量相似对象时尤为高效,因为它避免了重复的初始化过程。

JINGWHALE 1849

高速设计注意事项总结——MDI篇

在以太网高速通信系统中,MDI(Medium Dependent Interface,介质相关接口)是连接物理层芯片(PHY)与传输介质(如网线)的关键接口,其设计直接影响信号完整性、传输速率和抗干扰能力。本文围绕 MDI 及 RJ45 接口电路、关键参数、设计与布线要点展开,为高速以太网设计提供参考。本文包含MDI 及 RJ45 接口电路组成、电路设计注意事项、布局布线要求等内容

qq_16237389的博客 1445

LangChain学习及应用(超详细)

Model I/O 部分是与语言模型进行交互的核心组件,包括输入提示(Prompt Template)、调用模型(Model)、输出解析(Output Parser)。简单来说,就是输入、处理、输出这三个步骤。LLM 因其具有海量参数,需要花费相当的物力与时间成本进行预训练和微调,同时商用 LLM 还需要进行各种安全测试与风险评估等。因此 LLM 会存在知识滞后的问题。在专有领域,LLM 无法学习到所有的专业知识细节,因此在面向专业领域知识的提问时,无法给出可靠准确的回答。

weixin_39764056的博客 4245

【c++设计模式08】创建型6:原型模式(Prototype Pattern)

原型模式定义了一个原型接口,该接口用于复制现有对象以创建新对象,从而避免了昂贵的构建过程。使用原型模式,我们可以根据现有对象创建新对象,同时保持对象的类型和状态。浅拷贝:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。深拷贝:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。clone明显是深复制,clone出来的对象是是不能去影响原型对象的。

junxuezheng的博客 1582

RC正弦波振荡电路实验全解析:如何通过调节电容电阻改变输出频率

本文深入解析RC正弦波振荡电路,重点阐述如何通过调节电容和电阻来精确改变输出频率。文章从文氏桥振荡电路的核心原理出发,详细介绍了电容粗调频段与电阻微调频率的实操策略,并分析了元件误差、寄生参数等对实测频率的影响,为电路设计与调试提供了从理论到实践的完整指南。

yhn456789的博客 1114

【设计模式】创建型模式-原型模式(Prototype Pattern)

原型模式是一种创建型设计模式,允许通过复制现有对象(原型)来创建新对象,而无需依赖子类化。核心思想是将对象创建过程委托给对象自身,通过克隆机制实现高效的对象复制。

weixin_43510208的博客 584

PCL 计算点云包围球【2025最新版】

包围球通常用于简单排斥,因为与球体相交的方程很简单,同样重要的是,旋转一个球体并不会改变其范围。因此,当包围球用于简单排斥时,如果球体中心是对象的原点,则可以忽略对象的方向。

点云侠的博客 2068

精度与速度双突破:YOLOv8-Pose 在 RK3588 上实现高性能人体姿态分析部署

本教程从YOLOv8-pose模型的姿态识别训练,到RK3588的边缘量化部署,为你打造了一套“高精度+高实时性+低成本”的人体姿态分析解决方案。无论是健身动作纠正、智能安防行为检测,还是工业人员姿态监控,这套技术都能直接复用——你只需替换数据集与业务逻辑,即可快速落地专属的边缘AI姿态识别系统。如果你在实践中遇到任何卡点,欢迎随时交流。记住,人体姿态识别的价值在于“关键点准、推理快、部署易”,而这三者的平衡,正是你通过本教程能掌握的核心能力。

know_F0727的博客 434

【设计模式】【创建型模式(Creational Patterns)】之原型模式(Prototype Pattern)

原型模式是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过构造函数。这种方式可以提高性能,特别是在对象初始化需要消耗大量资源或耗时较长的情况下。性能提升:通过复制现有对象来创建新对象,可以避免复杂的初始化过程,提高性能。代码简洁:减少了重复的代码,特别是当对象的初始化过程非常复杂时。灵活度高:可以通过修改原型对象的属性来创建不同配置的对象实例。深拷贝和浅拷贝的问题:需要仔细处理对象的深拷贝和浅拷贝问题,否则可能会导致意外的行为。类必须实现克隆方法:每个需要被克隆的类都必须实现。

ido1ok的博客 861

从“点云”到“图像”:华为896线激光雷达的技术飞跃与行业影响浅析

华为发布全球首款896线双光路激光雷达,实现车载感知从"3D点云"到"3D成像"的跨越。该产品采用创新双光路架构,集成广角和长焦单元,单帧点云量达128线产品的7倍,可在55米外识别小狗摇尾巴等细节。实测数据显示,其能识别120米外14厘米低矮障碍物,夜间低反射率目标识别距离提升190%。尽管速腾聚创随后发布更高线数产品,但华为强调实用性和量产可行性,成本仅增加1-2万元。这一突破标志着激光雷达进入大规模应用阶段,将加速高阶智驾功能普及,强化华为在智能汽车领域的技术底

致力于lidar应用开发 211

设计模式 ~ 创建型模式 ~ 原型模式 ~ Prototype Pattern。

设计模式 ~ 创建型模式 ~ 原型模式 ~ Prototype Pattern。

lyfGeek的博客 271

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

设计模式——创建型之原型模式

设计模式——创建型之原型模式 拷贝已有对象作为新对象,这种创建对象的模式叫做原型模式 原型类: public class Prototype implements Cloneable{ private String paramA; private String paramB; private ParamObject paramC; public String getParamA() { return paramA; } public vo

大造梦家的博客 427

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

创建型设计模式——原型模式

那么克隆可能会在父类和子类之间进行,并且可能是动态的,很明显通过父类的拷贝构造函数无法实现对子类对象的拷贝。当要创建的对象类型由原型实例确定时使用,该实例被克隆以生成新对象。使用原型实例指定要创建的对象的种类,并通过复制此原型来创建新对象。可能想要通父类指针或引用把指向的子类对象克隆出来。,应该注意原型模式不是用来获得性能优势的。克隆这个对象不需要使用构造函数。⚠️注意:**浅克隆(浅复制)深克隆(深复制)**之间的区别。对象不包含指针或动态分配的资源。仅用于从原型实例创建新对象。

2502_93606049的博客 385

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【设计模式】创建型模式——原型模式

原型模式——克隆生成对象。

这里是Mae。 1109

创建型设计模式之原型模式

如题,今天我要总结的是创建型设计模式中的原型模式及单例模式,let’s go ! 原型模式 正如我前面那篇创建型导论博客总结的那样,原型模式和所有的创建型设计模式一样都需要创建一个新的对象,我们通过使用这个新对象来完成一些对对象的操作。 原型模式和其他创建型模式的不同点在于它并不需要通过专门new()就可以快速的完成对象的创建,毋庸置疑这种特性让它的在实际使用时的效率非常高,或者说它生来高效。 定义: 原型模式用原型实例制定创建对象的种类,并通过拷贝这些原型创建新的对象。 使用场景 1.对象的构造函数

s310040799的博客 263

【设计模式精讲】创建型模式之原型模式(深克隆、浅克隆)

定义: 原型模式(Prototype Design Pattern)用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。西游记中的孙悟空 拔毛变小猴,孙悟空这种根据自己的形状复制出多个身外化身的技巧,在面向对象软件设计领域被称为原型模式.孙悟空就是原型对象.原型模式主要解决的问题。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

Java GoF 23种设计模式-创建型模式-原型模式(Prototype Pattern)

文章目录一、模式定义二、模式动机三、模式结构四、代码实现五、优缺点5.1 原型模式优点5.2 原型模式缺点 一、模式定义 原型模式(Prototype Pattern)是一种创建型设计模式,使你能够复制已有对象, 而又无需使代码依赖它们所属的类。原型模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用原型模式。 二、模式动机 在我们应用程序可能有某些对象的结构比较复杂,但是我们又需要频繁的使用它们,如果这个时候我们来不断的新建这个对象势必会大大损耗系统内存的,这个时候

WU4566285的博客 373

【设计模式】创建型模式(五):原型模式

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。

Data · Model · Agent · Repeat 1197

【设计模式】【创建型模式】原型模式(Prototype)

原型模式(Prototype Pattern)是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化类。原型模式的核心是克隆(Clone),即通过复制现有对象来创建新对象。Java 提供了 Cloneable 接口和 clone() 方法来实现对象的浅拷贝。高效创建对象通过复制现有对象来创建新对象,避免了重复的初始化过程,特别适用于创建成本较高的对象(如数据库连接、复杂计算对象)。

flzjkl的博客 1521

设计模式:创建型模式--原型模式(Prototype Pattern)

设计模式:创建型模式–原型模式(Prototype Pattern) 文章目录设计模式:创建型模式--原型模式(Prototype Pattern)1. 概念2. 组成结构3. 实现细节4. 具体案例5. 使用场景6. 扩展内容6.1 克隆(Clone)6.2 浅克隆(Shallow Clone)6.3 深克隆(Deep Clone)6.3.1 Clone6.3.2 对象流 1. 概念 原型模式(Prototype Pattern)通常被用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式

ZZay's 362

设计模式(四):创建型之原型模式

用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。

从基础到源码解析的学习记录 1009

Java设计模式-创建型设计模式-原型模式

Java设计模式-创建型设计模式-原型模式

Fatter$hday的博客 1576
上一篇: 创建型设计模式-生成器模式
下一篇: 创建型模式-单例模式
#难得糊涂
博客等级 码龄8年 231粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值