设计模式之原型模式

应用场景

先来说一下原型模式的应用场景

  • 创建新对象成本较大,如初始化需要占用较长的时间,占用太多的CPU资源或网络资源。在这种情况下,可以通过原型模式对已有对象进行复制来获得新对象,如果是相似对象,可以对其成员变量稍作修改。
  • 在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过 clone 的方法创建一个对象,然后由工厂方法提供给调用者。

实现步骤

  1. 实体类要实现一个Cloneable的接口
  2. 重写clone方法
  3. 在client类中创建原型对象
    这是一个奖状类,通过学生的
java 复制代码
package com.设计模式.原型模式.demo;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: Coderfine
 * @Date: 2023/10/08/19:03
 * @Description:这是一个三好学生的奖状类
 */
public class Citation implements Cloneable{

    //三号学生的姓名
    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public Citation clone() throws CloneNotSupportedException {
        return (Citation) super.clone();
    }
    public void show(){
        System.out.println(name+"同学......................");
    }
}

测试类

java 复制代码
package com.设计模式.原型模式.demo;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: Coderfine
 * @Date: 2023/10/08/19:05
 * @Description:使用场景,创建对象比较复杂的话可以使用原型对象来进行克隆
 */
/*
    这是一个String类型的演示
 */
public class Test {
    public static void main(String[] args) throws CloneNotSupportedException {
        //创建原型对象
        Citation citation = new Citation();

        //克隆奖状对象
        Citation clone = citation.clone();

        citation.setName("alibaba");
        clone.setName("范小勤");

        clone.show();
        citation.show();
    }
}

就好像有一个模板,让后自己把业务的逻辑往里面放

深克隆和浅克隆

  • 浅克隆:创建一个对象,新对象的属性和原来的对象的属性完全相同,对于非基本类型属性,仍指向原有属性所指的对象的内存地址
  • 深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原来对象的地址。

深克隆实际就是把文件直接复制一份,浅克隆就是建立一个快捷方式,对象的clone是一种深克隆

相关推荐
青云交1 分钟前
Java 大视界 -- Java+Spark 构建企业级用户画像平台:从数据采集到标签输出全流程(437)
java·开发语言·spark·hbase 优化·企业级用户画像·标签计算·高并发查询
铉铉这波能秀5 分钟前
正则表达式从入门到精通(字符串模式匹配)
java·数据库·python·sql·正则表达式·模式匹配·表格处理
郝学胜-神的一滴8 分钟前
Linux线程的共享资源与非共享资源详解
linux·服务器·开发语言·c++·程序人生·设计模式
武子康15 分钟前
Java-202 RabbitMQ 生产安装与容器快速启动:Erlang 兼容、RPM 部署与常用命令
java·消息队列·rabbitmq·erlang·java-rabbitmq·mq
a程序小傲19 分钟前
米哈游Java后端面试被问:Spring Boot Starter的制作原理
java·spring boot·后端
syt_101320 分钟前
设计模式之-单例模式
单例模式·设计模式
Misnearch21 分钟前
Mock服务是什么?
java·后端·微服务·mock
后端小张25 分钟前
【JAVA 进阶】深入理解Sentinel:分布式系统的流量守卫者
java·开发语言·spring boot·后端·spring·spring cloud·sentinel
cheems952726 分钟前
[JavaEE] CAS 介绍
java·开发语言·java-ee
lkbhua莱克瓦2431 分钟前
IO练习——登入注册
java·开发语言·io流·java练习题