Java23种设计模式(二):原型模式

JAVA设计模式总结之23种设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。 阅读详情

Java 中的 23 种设计模式详解

设计模式是软件开发中的最佳实践,帮助开发者在面对复杂设计问题时提供有效的解决方案。GoF(Gang of Four)在其经典著作《设计模式:可复用面向对象软件的基础》中定义了 23 种设计模式。。本文将详细介绍23种经典设计模式,包括创建型模式、结构型模式和行为型模式,提供每种模式的定义、原理、优点、Java示例代码以及详细注释。

目的范围名称描述
创建型(Creational)对象单例模式(Singleton)保证一个类仅有一个实例:并提供一个访问它的全局访问点。
原型模式(Prototype)用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
建造者模式(Builder)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
抽象工厂模式(Abstract Factory)提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
类工厂方法模式(Factory Method)定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使个类的实例化延迟到其子类。
结构型(Structural)对象适配器模式(Adapter)将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化。
组合模式(Composite)将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
装饰模式(Decorator)动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活。
外观模式(Facade)运用共享技术有效地支持大量细粒度的对象。
享元模式(Flyweight)为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
代理模式(Proxy)为其他对象提供一个代理以控制对这个对象的访问。
类适配器模式(Adapter)将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
行为型(Behavioral)对象责任链模式(Chain of Responsibility)为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
命令模式(Command)将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
迭代器模式(lterator)提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。
中介者模式(Mediator)用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
备志录模式(Memento)在不破坏封装性的前提下,捕获一个对象的内部状态。
观察者模式(Observer)定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
状态模式(State)允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
策略模式(Strategy)定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
访问者模式(Visitor)表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
类解释器模式(Interpreter)给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
模板方法模式(Template Method)定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Iethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步。

创建型模式(Creational Patterns)

创建型模式关注于对象的创建,提供了更灵活的对象创建方式。

创建型模式分为单例模式(Singleton Pattern)、原型模式(Prototype Pattern)、建造者模式(Builder Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)

原型模式(Prototype Pattern)

问题:

在某些情况下,需要创建对象的副本,但复制一个对象的成本可能很高,或者希望避免与对象的具体类耦合。例如,当创建对象的过程较为复杂,或者对象包含大量共享的状态时,使用常规的创建方法可能会导致性能下降。

解决方案:

原型模式的解决方案是通过复制现有对象来创建新对象,而不是从头开始构建。这允许我们以更高效的方式创建新对象,同时避免了与对象类的直接耦合。核心概念是在原型对象的基础上进行克隆,使得新对象具有与原型相同的初始状态。

在原型模式中,通常会有以下几个角色:

  • 抽象原型(Prototype):声明克隆方法,作为所有具体原型的基类或接口。
  • 具体原型(Concrete Prototype):实现克隆方法,从自身创建一个副本。
  • 客户端(Client):使用原型对象的客户端代码,在需要新对象时通过克隆现有对象来创建新实例。

效果:

原型模式的应用可以带来以下效果:

  • 减少对象创建的成本:避免了复杂对象的重复初始化过程,提高了创建对象的效率。
  • 避免与具体类耦合:客户端可以通过克隆方法创建新对象,而无需知道具体类的细节,降低了耦合度。
  • 灵活性增加:可以在运行时动态地添加或删除原型,适应不同的对象创建需求。
  • 支持动态配置:可以通过克隆来定制对象的不同配置,而无需修改其代码。

然而,也需要注意一些限制,如:

  • 深克隆问题:原型模式默认进行浅克隆,即复制对象本身和其引用。如果对象内部包含其他对象的引用,可能需要实现深克隆来复制整个对象结构。
  • 克隆方法的实现:某些对象可能不容易进行克隆,特别是涉及到文件、网络连接等资源的情况。

总之,原型模式是一种在需要创建对象副本时非常有用的设计模式,它提供了一种灵活且高效的方法来处理对象的复制需求。

常见的原型模式实现方式有:Cloneable接口(浅拷贝)、序列化(深拷贝)、手动复制(构造器/工厂方法)等。

Cloneable接口实现(浅拷贝)
  • 原理‌:
    • 实现Cloneable标记接口
    • 重写Object.clone()方法
    • 默认实现是浅拷贝(只复制基本类型和引用地址)
  • ‌优点‌:

    • 实现简单,Java原生支持
    • 性能较高,直接内存复制
  • ‌缺点‌:

    • 只实现浅拷贝,引用对象共享
    • 需要处理CloneNotSupportedException
    • 无法与单例模式组合使用

Java示例

class CloneablePrototype implements Cloneable {
    private String name;
    private List<String> items = new ArrayList<>();
    
    public CloneablePrototype (String name) {
        this.name = name;
        System.out.println("执行耗时初始化...");
        try { Thread.sleep(1000); } catch (InterruptedException e) {}
    }
    
    @Override
    public CloneablePrototype clone() throws CloneNotSupportedException {
        return (CloneablePrototype) super.clone(); // 浅拷贝
    }
    
    public void addItem(String item) { items.add(item); }
    
    public void printStatus() {
        System.out.println(name + " - Items: " + items + 
                         " (Hash: " + System.identityHashCode(items) + ")");
    }
}


public class PrototypeDemo {

    public static void main(String[] args) throws Exception {
        System.out.println("=== Cloneable实现(浅拷贝) ===");
        CloneablePrototype original1 = new CloneablePrototype("Original1");
        original1.addItem("Item1");
        CloneablePrototype copy1 = original1.clone();
        copy1.addItem("Item2");
        original1.printStatus();
        copy1.printStatus();
    }
}
序列化实现(深拷贝)
  • 原理‌:
    • 通过对象序列化和反序列化实现完全独立的副本
    • 需要实现Serializable接口
    • 所有引用对象也必须可序列化
  • 优点‌:

    • 实现真正的深拷贝
    • 不依赖clone()方法
    • 可以处理复杂对象图
  • ‌缺点‌:

    • 性能开销较大
    • 所有相关类必须实现Serializable
    • 无法复制不可序列化的对象

Java示例

class SerializablePrototype implements Serializable {
    private static final long serialVersionUID = 1L;
    private String data;
    private List<String> values = new ArrayList<>();
    
    public SerializablePrototype deepCopy() {
        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(bos);
            oos.writeObject(this);
            
            ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
            ObjectInputStream ois = new ObjectInputStream(bis);
            return (SerializablePrototype) ois.readObject();
        } catch (Exception e) {
            throw new RuntimeException("Deep copy failed", e);
        }
    }
    
    public void addValue(String value) { values.add(value); }
    
    public void printStatus() {
        System.out.println(data + " - Values: " + values + 
                         " (Hash: " + System.identityHashCode(values) + ")");
    }
}



public class PrototypeDemo {
    public static void main(String[] args) throws Exception {
        System.out.println("\n=== 序列化实现(深拷贝) ===");
        SerializablePrototype original2 = new SerializablePrototype();
        original2.addValue("Value1");
        SerializablePrototype copy2 = original2.deepCopy();
        copy2.addValue("Value2");
        original2.printStatus();
        copy2.printStatus();
    }
}
手动复制实现(构造器/工厂方法)
  • ‌原理‌:
    • 通过自定义复制逻辑创建新对象
    • 可以使用构造器或静态工厂方法
    • 完全控制复制过程
  • 优点‌:

    • 完全控制复制过程
    • 不需要实现特殊接口
    • 可以处理任何复杂情况
  • ‌缺点‌:

    • 需要为每个类编写复制逻辑
    • 维护成本较高
    • 当类结构变化时需要更新复制逻辑

Java示例

class ManualCopyPrototype {
    private String id;
    private List<String> elements = new ArrayList<>();
    
    // 原始构造器
    public ManualCopyPrototype(String id) {
        this.id = id;
        System.out.println("执行复杂初始化...");
        try { Thread.sleep(1500); } catch (InterruptedException e) {}
    }
    
    // 复制构造器
    public ManualCopyPrototype(ManualCopyPrototype source) {
        this.id = source.id + "-copy";
        this.elements = new ArrayList<>(source.elements); // 深拷贝列表
    }
    
    // 工厂方法
    public static ManualCopyPrototype newInstance(ManualCopyPrototype source) {
        ManualCopyPrototype copy = new ManualCopyPrototype(source.id + "-factory");
        copy.elements = new ArrayList<>(source.elements);
        return copy;
    }
    
    public void addElement(String element) { elements.add(element); }
    
    public void printStatus() {
        System.out.println(id + " - Elements: " + elements + 
                         " (Hash: " + System.identityHashCode(elements) + ")");
    }
}


public class PrototypeDemo {
    public static void main(String[] args) throws Exception {
        System.out.println("\n=== 手动复制实现 ===");
        ManualCopyPrototype original3 = new ManualCopyPrototype("Original3");
        original3.addElement("Element1");
        ManualCopyPrototype copy3a = new ManualCopyPrototype(original3);
        ManualCopyPrototype copy3b = ManualCopyPrototype.newInstance(original3);
        copy3a.addElement("Element2");
        copy3b.addElement("Element3");
        original3.printStatus();
        copy3a.printStatus();
        copy3b.printStatus();
    }
}

原型模式实现方式对比及应用场景

实现方式拷贝类型性能复杂度适用场景
Cloneable接口浅拷贝高低简单对象,无引用或引用不可变
序列化深拷贝低中复杂对象图,需要完全独立副本
手动复制自定义中高特殊需求,需要精细控制复制过程

推荐使用场景

  • 简单对象优先使用Cloneable‌:对于没有引用或引用不可变的对象,Cloneable是最简单高效的实现2324
  • 复杂对象使用序列化深拷贝‌:当对象图复杂且需要完全独立副本时,序列化是可靠选择2526
  • 特殊需求考虑手动复制‌:当有特殊复制逻辑或性能要求时,手动复制提供最大灵活性27
  • 注意线程安全问题‌:克隆对象时要注意对象状态的线程安全性13
  • ‌考虑使用原型管理器‌:对于需要管理多种原型的场景,可以实现原型管理器来集中管理

[网络安全提高篇] 一二〇.恶意软件动态分析经典沙箱Cape批量提取动态API特征 这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍动态分析沙箱Cape的安装过程,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。然而,当样本数量增加时,单个样本分析会降低效率。这篇文章将讲解如何实现Cape沙箱的批量分析,通过调用Python脚本文件来实施批量处理,并将分析结果存储在指定位置,最后补充submit.py的参数及Python调用方式。基础性文章,希望对您有帮助! 阅读详情

相关推荐

安卓 实现灯光闪过效果

有个小需求,给按钮加一个灯光划过的效果,这样的需求一般有UI,肯定就找UI了要个gif图不就完事了,可是这次没有,好久自己做一个嘛。Web端的大佬实现很快,到安卓这边呢,百度一搜发现诶?怎么没有,好吧自己来一个 一切动效相关的不给图看都是耍流氓 所以俺不能这么干啊,OK!直接上效果图,再来解释下怎么实现的 效果就是这样子,怎么实现呢? 从图分析下,就是一个光写着重左边移动要右边循环嘛,这有啥难的?? 来看一看我的第一版,第二版 这是个什么?????一点都不像啊? 赶紧再问了问Web端大佬,噢,加了一个

SummerCloudXT的博客 1378

23种设计模式之原型模式(Prototype Pattern)

本篇文章将23种设计模式中的单例设计模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+

【保姆级教程/代码】GNSS反演大气可降水量(Precipitable Water Vapor, PWV)

GPS精密单点定位(PPP)是一种采用精密卫星星历和卫星钟差进行非差单点定位的方法,在观测过程中采用双频载波相位观测法以确保高精度定位精度。本文利用PPP技术来求解天顶对流层延迟(zenith tropospheric delay,ZTD)。ZTD由湿延迟(ZWD)和干延迟(ZHD)组成,其中占比90%的ZHD与地面测站高程、大气压和测站纬度等参数有良好的相关性,可以通过Saastamoinen模型精确求出;

weixin_43910227的博客 2925

23种设计模式——原型模式

文章目录23种设计模式——原型模式1、原型模式概述2、原型模式的结构图3、原型模式的实现3.1、浅拷贝和深拷贝3.2、实现浅拷贝3.2、实现深拷贝 23种设计模式——原型模式 1、原型模式概述 原型模式介绍 1、原型模式(Prototype模式)是指:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。 2、原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节,因此用这种方式创建对象非常高效

万里顾一程的博客 3318

DIC新手避坑指南:压缩实验中的应变测量常见错误与数据校验技巧

本文为DIC技术新手提供了压缩实验中应变测量的全面避坑指南。文章系统梳理了从试样尺寸录入、散斑质量到数据后处理中应变方向与符号混淆、数据插值对齐等常见错误,并分享了基于MATLAB的自动化数据校验与可视化对比技巧,帮助建立可靠的实验数据分析SOP,确保DIC测量结果的准确性。

weixin_29313423的博客 113

Eclipse 数据空间组件(EDC)项目介绍

在当今数字经济的背景下,数据成为了新的“石油”。但与石油不同的是,数据可以无限共享且再生。然而,如何在保持数据主权的前提下实现高效、安全的数据共享,成为了企业和组织面临的主要挑战。这时,**Eclipse 数据空间组件(Eclipse Dataspace Components, EDC)**应运而生,它为企业在多方参与的数据交换中提供了一个标准化、可扩展的解决方案。数据空间不仅是一个多组织间的数据共享协议,还是一套支撑这些协议运行的技术基础设施。

m0_74331272的博客 4597

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

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

Fatter$hday的博客 1576

Aruco标签定位、测距、三维位置估算 opencv应用

摄像头要一开始对准aruco标签才开始运行。+ 相机标定文件(参考我的上篇文章)+ aruco标签6*6。

dgut_guangdian的博客 4221

23种设计模式-原型模式

用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。Client : 客户端用户。Prototype : 抽象类或者接口,声明具备clone能力。ConcretePrototype : 具体的原型类.下面我们以简单的文档拷贝为例来演示一下简单的原型模式模式。

陈立的博客 950

从零开始玩转机械臂:用Matlab+Robotics Toolbox实现四自由度机械臂运动仿真

本文详细介绍了如何利用Matlab及其Robotics Toolbox工具箱,从零开始构建并仿真一个四自由度机械臂。通过D-H参数建模、正向运动学验证、交互式操控以及轨迹规划等实践步骤,帮助初学者在虚拟环境中直观理解机器人运动学核心概念,为后续硬件实现奠定坚实基础。

weixin_29055699的博客 325

【WRF数据准备】气象驱动数据-ERA5再分析数据(Copernicus)

【WRF数据准备】气象驱动数据-ERA5再分析数据

WW、forever的博客 5529

瑞_23种设计模式_原型模式

本文章为瑞_系列专栏之《23种设计模式》的原型模式篇。原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 2212

AISBench benchmark评测工具实操-精度评测场景-采用命令行指定模型和数据集的方式

搭建AISBench benchmark测试环境,包括创建conda环境、安装AISBench benchmark、处理ceval数据集,并修改相关配置文件以适配测试需求。最终,通过启动精度测评,验证了模型在指定环境下的性能。

m0_50105717的博客 2041

Java23种设计模式之原型模式的学习

源码链接(Gitee码云):https://gitee.com/oldou/javadesignpatterns 这里有我整理好的Java23种设计模式的源码以及博客教程,博客教程中介绍了Java23种设计的模式的各种实现方式以及应用场景,非常适用于学习以及提高我们的设计思维,如果对大家有所帮助,请记得star一下给予作者一定的精神支持,你的star是我写出更好的博客的动力,谢谢大家。 原型模式(prototype) 介绍 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能..

weixin_43246215的博客 3294

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

深入JAVA框架学习23种设计模式-原型模式

快速失败机制的实现是通过在集合的内部维护一个计数器(modCount),每次修改集合时都会增加计数器的值。接下来这段代码是我们今天的重点第一个判断显然是对单例模式bean对象的获取,最主要我们来看第二个,即对原型模式bean对象获取方法,首先将prototypeInstance赋为空值null,定义了一个Object对象prototypeInstance,注意这两个对象并不是一个对象,它们所处的作用域不同即位于不同的{}内的代码块,prototypeInstance在上个代码块中时String[]对象。

weixin_61854715的博客 1170

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【23种设计模式专题】三 原型模式

了解原型模式,知道浅克隆和深克隆是怎么一回事

程序猿学社的博客 5106

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java 23种设计模式系列之——实战原型模式

设计模式的分类----实战原型模式 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下: 一、前言 老板你加钱我的代码能飞

Java0258的博客 473

23种设计模式之原型模式

23种设计模式之原型模式 文章目录23种设计模式之原型模式参考资料一、简介定义原理特点优点缺点通用类图应用场景二、实现分类浅克隆(浅拷贝)深克隆(深拷贝)浅克隆原型模式深克隆原型模式1. 重写clone()方法2. 使用对象的序列化三、总结 参考资料 Java设计模式:23种设计模式全面解析(超级详细) 韩顺平老师的Java设计模式(图解+框架源码剖析) 秦小波老师的《设计模式之禅》 下文如有错漏之处,敬请指正 一、简介 定义 通过克隆原型的实例对象,创建新的对象。 原理 原型实例实现Cloneab

space_qi的博客 177

gof23——原型模式

gof23——原型模式一、原型模式的应用场景二、浅克隆三、深克隆 一、原型模式的应用场景 原型模式(Prototype)是指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 原型模式主要适用于以下场景: 类初始化消耗的资源较多 使用new生成一个对象需要非常繁琐的过程(数据准备、访问权限等) 构造函数比较复杂 在循环体中产生大量对象 二、浅克隆 一个标准的原型模式代码应该是这样设...

左耳依然的博客 418

全面解读Java的23种设计模式

需要注意的是,混合使用设计模式要谨慎,不要过度使用设计模式,以免代码过于复杂和难以维护。选择合适的设计模式和合适的组合方式,可以使代码更加简洁、高效和易于维护。

weixin_39158966的博客 3265

23种设计模式——原型模式 (Prototype Pattern)详解

本文介绍了23种经典设计模式之——原型模式 (Prototype Pattern)的说明及使用

Meteors.的博客 1001

《23种设计模式(Java版)》| 原型模式(内附源码案例)。

## 一、概述 原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建——==来源于百度百科==。 `通俗理解:` - 原型模式(Prototype模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。 - 原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的

我这么骄傲的一个人。 875

23种设计模式之【原型模式】-核心原理与 Java实践

原型模式是 23 种设计模式中的一种创建型模式,其核心思想是通过复制(克隆)现有对象来创建新对象,而不是通过 new 关键字新建。这种模式适用于创建成本较高(如初始化步骤复杂、耗时)或需要频繁创建相似对象的场景,通过复制原型对象可以提高创建效率。原型模式的优势在于简化对象创建过程,提高创建效率,尤其适合创建复杂对象或大量相似对象的场景。,通过复制已有对象来生成新对象,避免了重复的初始化过程,提高了对象创建效率。实现原型接口的克隆方法,完成自身的复制。通过调用原型对象的克隆方法来创建新对象。

学习 记录 总结 分享 924

Java23种设计模式——2.创建型模式之原型模式

Java中除去有设计原则之外,还有23中设计模式。(设计模式我们主要来将思想和精髓的地方,除去Java还有其他的语言也可以适用) 这些模式都是前辈们一点一点积累下来,一直在改进,一直在优化的,这些设计模式可以解决一些特定的问题。 这些模式中,可以说是将语言的使用提现的淋漓尽致,我们今天要学习第一种设计模式,原型模式! 原型模式: 先来看一下这个的权威定义 来源:百度百科 从表面上看,创...

胖子胖子大胖子的博客 1248

java23种设计模式——四、原型模式

java23种设计模式——四、原型模式 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。 举个例子,就是当我们需要给电脑安装win10系统时需要去官网上下载win10系统的安装包。而安装包的大小都是很耗时的,还需要另一台电脑来操作。如果我们下载了一个安装包放在我们的u盘里,之后需要安装win10时是不

CoderMy的博客 396

java23种设计模式-原型模式

原型模式:通过复制现有对象(原型)来创建新对象,避免重复进行初始化操作。该模式的核心是实现对象的克隆能力。

专注后端开发 826
上一篇: Java23种设计模式(一):单例模式
下一篇: Java23种设计模式(三):建造者模式
秃头老赵_
博客等级 码龄9年 16粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃头老赵_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值