首页 > 编程语言 >Java 原型模式

Java 原型模式

时间:2023-12-28 15:58:54浏览次数:32  
标签:Sheep Java name 对象 colour 模式 原型 Friend friend

原型模式是一种创建型设计模式,用于在保证性能的情况下创建新的对象实例。原型模式允许一个对象再创建另外一个可定制的对象,而无需知道创建的细节。其工作原理是通过拷贝实现对象创建,即clone()。
但是我们通过new也能创建一个属性一样的对象,两者的区别是什么呢?

  • new操作符:用于创建一个新的对象实例。该操作会调用构造函数以初始化对象并分配所需的内存空间,返回指向该对象的引用。new操作符需要调用构造函数来初始化对象,并且会分配独立的内存空间来存储新对象。
  • 克隆方法:克隆方法是Object类中定义的一种浅拷贝操作方法。该方法使用当前对象的副本来创建一个新的对象,而无需调用任何构造函数,并将其返回给调用者。与new不同的是,clone创建的是原始对象的复制品。这个过程需要对象实现 Cloneable 接口(否则会抛出 CloneNotSupportedException 异常)和覆盖 clone() 方法,以便在运行时复制对象的所有字段。克隆方法可以在已有对象的内存地址上创建新对象,避免构造器的执行,并且可以快速地复制对象的所有属性值。
    总结来说,通过“new”操作符创建新对象需要调用构造函数并分配独立的内存空间,而克隆对象则是在已有对象的内存地址上创建新对象,避免构造器的执行,并且可以快速地复制对象的所有属性值。

下面是Clone的例子(浅拷贝,基础数据类型是值传递,其他对象则是引用传递)

Friend类

public class Friend {
    String name;

    @Override
    public String toString() {
        return "Friend{" +
                "name='" + name + '\'' +
                '}';
    }

    public Friend(String name) {
        this.name = name;
    }
}

标签:Sheep,Java,name,对象,colour,模式,原型,Friend,friend
From: https://www.cnblogs.com/yan061/p/17932867.html

相关文章

  • 设计模式对比
     代理、桥接、装饰器、适配器4种设计模式的区别代理、桥接、装饰器、适配器,这4种模式是比较常用的结构型设计模式。它们的代码结构非常相似。笼统来说,它们都可以称为Wrapper模式,也就是通过Wrapper类二次封装原始类。尽管代码结构相似,但这4种设计模式的用意完全不同,也就是说要......
  • Linux 服务器 Java 进程消失问题怎么解决
    当您在使用NginxWebUI进行反向代理时遇到504错误,这通常是由于Nginx无法在合理的时间内完成请求处理。504错误是Nginx的通用错误,表示"网关超时"。以下是可能导致此问题的原因以及相应的解决方案:1.后端服务器问题原因:后端服务器可能由于各种原因无法及时响应。解决方案:检查后端服务......
  • 无涯教程-Java泛型 - 绑定类型清除
    如果使用有界的类型参数,Java编译器会用其界线替换通用类型的类型参数。packagecom.learnfk;publicclassGenericsTester{publicstaticvoidmain(String[]args){Box<Integer>integerBox=newBox<Integer>();Box<Double>doubleBox=newBox<Double>()......
  • java-类
    在Java中,类是面向对象编程的基本概念之一。类是用来描述对象的属性(状态)和行为(方法)的模板或者蓝图。当我们创建一个类时,实际上是定义了一个新的数据类型,可以根据这个类来创建相应的对象。下面是一个简单的类的示例:javaCopyCodepublicclassPerson{//定义类的属性S......
  • java-继承
    在面向对象编程中,继承是一种重要的特性,它允许我们创建一个新的类(称为子类),从已有的类(称为父类或超类)继承属性和方法。通过继承,子类可以获得父类的特性,并且可以在此基础上添加新的特性或修改已有的特性。下面是一个简单的继承的示例:javaCopyCode//定义父类classAnimal{......
  • 二十,JAVA File
    相对路径:IO流默认目录:当前项目工程开始自己算绝对路径:带盘符的路径:网络路径:https://img2.baidu.com/it/u=3164322677&fm=253&fmt=auto&app=120File:文件(带后缀的)和目录(文件夹)//静态字段:System.out.println("File.pathSeparator="+File.p......
  • java智能导诊系统源码,可应用于微信线上挂号、互联网医院、区域平台等场景
    java智能导诊系统源码,可扩展至H5、小程序、app等多端一、系统概述:人体智能导诊系统:是基于医疗AI、自然语言处理技术,推出的在线导医分诊智能工具,在医疗中使用的引导患者自助就诊挂号。在就诊的过程中有许多患者不知道需要挂什么号,要看什么病,通过人体智能导诊系统,点击对应的人体部位,......
  • 【SpringBoot零基础入门到项目实战②】安装Java和Maven,创建你的第一个项目
    文章目录导言安装JavaWindows系统macOS系统Linux系统安装和配置MavenWindows系统macOS系统Linux系统配置Maven本地仓库使用阿里镜像加速创建第一个SpringBoot项目拓展学习(提前了解后面会讲到)1.深入理解SpringBoot的项目结构2.学习SpringBoot的自动配置3.掌握SpringBoot......
  • Java 系统学习 | Springboot 写 hello world
    经过一段时间基础学习,现在开始使用Springboot框架完成项目,特地记录一下,方便后续查漏补缺。本篇使用Springboot3框架,IDEA2022编辑器,java17版本。新建项目file->new->project弹框中填入自己的信息Name项目名称Location项目存放路径LanguageJavaB......
  • java模块化
    一、模块化概述 二、模块的使用 三、模块服务的使用     ......