广告
返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈Java设计模式之原型模式知识总结
  • 495
分享到

浅谈Java设计模式之原型模式知识总结

2024-04-02 19:04:59 495人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

如何使用? 1.首先定义一个User类,它必须实现了Cloneable接口,重写了clone()方法。 public class User implements Cloneabl

如何使用?

1.首先定义一个User类,它必须实现了Cloneable接口,重写了clone()方法。


public class User implements Cloneable {
    private String name;
    private int age;
    private Brother brother;

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

2.Brother类


public class Brother{
	private String name;
}

3.应用演示类


public class PrototypeDemo {
    public static void main(String[] args) throws CloneNotSupportedException {
        User user1 = new User();
        user1.setName("秋红叶");
        user1.setAge(20);
        Brother brother1 = new Brother();
        brother1.setName("七夜圣君");
        user1.setBrother(brother1);
        // 我们从克隆对象user2中修改brother,看看是否会影响user1的brother
        User user2 = (User) user1.clone();
        user2.setName("燕赤霞");
        Brother brother2 = user2.getBrother();
        brother2.setName("唐钰小宝");
        System.out.println(user1);
        System.out.println(user2);
        System.out.println(user1.getBrother() == user2.getBrother());
    }
}

在这里插入图片描述

4.深拷贝写法

这是User类


public class User implements Cloneable {
    private String name;
    private int age;
    private Brother brother;

	
    @Override
    protected Object clone() throws CloneNotSupportedException {
        User user = (User) super.clone();
        user.brother = (Brother) this.brother.clone();
        return user;
    }
}

这是Brother类


public class Brother implements Cloneable{
    private String name;

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

这里是结果演示


public class PrototypeDemo {
    public static void main(String[] args) throws CloneNotSupportedException {
        User user1 = new User();
        user1.setName("秋红叶");
        user1.setAge(20);
        Brother brother1 = new Brother();
        brother1.setName("七夜圣君");
        user1.setBrother(brother1);
		// 我们从克隆对象user2中修改brother,看看是否会影响user1的brother
        User user2 = (User) user1.clone();
        user2.setName("燕赤霞");
        Brother brother2 = user2.getBrother();
        brother2.setName("唐钰小宝");
        System.out.println(user1);
        System.out.println(user2);
        System.out.println(user1.getBrother() == user2.getBrother());
    }
}

在这里插入图片描述

可以看到,user1的brother没有受到user2的影响,深拷贝成功!

5.图解深拷贝与浅拷贝

在这里插入图片描述

总结与思考

java中object类的clone()方法为浅拷贝必须实现Cloneable接口如果想要实现深拷贝,则需要重写clone()方法

到此这篇关于浅谈Java设计模式之原型模式知识总结的文章就介绍到这了,更多相关Java原型模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈Java设计模式之原型模式知识总结

本文链接: https://www.lsjlt.com/news/126816.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈Java设计模式之原型模式知识总结
    如何使用? 1.首先定义一个User类,它必须实现了Cloneable接口,重写了clone()方法。 public class User implements Cloneabl...
    99+
    2022-11-12
  • Java设计模式之构建者模式知识总结
    目录一、构建者模式1.1 定义1.2 主要作用1.3 解决的问题二、模式原理2.1 模式讲解2.2 实例讲解2.2.1 实例概况2.2.2 使用步骤三、优缺点3.1 优点3.2 缺点...
    99+
    2022-11-12
  • Java设计模式之浅谈外观模式
    目录简介外观模式之理解实例①、定义子系统②、外观类③、测试好文推荐简介 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类...
    99+
    2022-11-13
  • 浅谈Java设计模式之七大设计原则
    目录前言一、单一职责原则(SingleResponsibilityPrinciple,SRP)二、开闭原则(Open-ClosedPrinciple,OCP)三、里氏代换原则(Lis...
    99+
    2022-11-12
  • Java设计模式之浅谈模板方法模式
    一. 什么是模板方法设计模式 从字面意义上理解, 模板方法就是定义出来一套方法, 作为模板, 也就是基础。 在这个基础上, 我们可以进行加工,实现个性化的实现。比如:一日餐三. 早餐...
    99+
    2022-11-12
  • java设计模式之浅谈适配器模式
    目录一、结构型模式二、适配器模式三、什么是适配器模式?四、角色分析五、对象适配器有哪些优点六、类适配器缺点七、使用场景一、结构型模式 结构型模式有什么好处? 从程序的结构上实现松耦合...
    99+
    2022-11-12
  • 浅谈Java设计模式之开放封闭原则
    写在前面最近, 接手了一个新业务,系统的架构可圈可点。但有些地方让人望而生畏,有些代码臃肿难以维护,让人不敢恭维。于是,结合了Java的开放封闭原则,对其中一部分代码进行了重构优化。先来看下以前系统的老代码ShareChannelManag...
    99+
    2023-05-31
    开放 封闭 ava
  • 浅谈PHP设计模式之门面模式Facade
    目录目的UML代码测试目的 Facade通过嵌入多个(当然,有时只有一个)接口来解耦访客与子系统,同时也为了降低复杂度。 Facade 不会禁止你访问子系统 你可以...
    99+
    2022-11-12
  • Java设计模式之初识行为型模式
    目录一、行为型模式二、模板方法模式2.1 例子2.2 模板方法使用场景三、策略模式3.1 例子3.2 使用场景四、状态模式五、中介者模式六、观察者模式6.1 使用场景一、行为型模式 ...
    99+
    2022-11-12
  • Java设计模式之原型模式详解
    目录一、前言二、优点及适用场景三、原型模式的注意事项四、浅复制和深复制五、浅复制demo演示六、深复制demo演示一、前言 原型模式是一种比较简单的模式,也非常容易理解,实现一个接口...
    99+
    2022-11-12
  • Java设计模式之java原型模式详解
    目录介绍角色Java语言提供的clone()方法代码演示—克隆羊结论深浅拷贝深浅拷贝探讨实现深克隆的方式一 : 手动对引用对象进行克隆实现深克隆的方式一 :序列化原型模式对单例模式的...
    99+
    2022-11-12
  • 浅谈PHP设计模式之对象池模式Pool
    目录目的UML 类图代码测试目的 在初始化实例成本高,实例化率高,可用实例不足的情况下,对象池可以极大地提升性能。在创建对象(尤其是通过网络)时间花销不确定的情况下,通过对象池在可期...
    99+
    2022-11-12
  • java设计模式:原始模型模式
    目录什么是原始模型模式原始模型模式中的角色抽象原型角色(Prototype)具体原型角色(ConcretePrototype)A...
    99+
    2022-11-12
  • 深入理解Java设计模式之原型模式
    目录一、前言二、什么是原型模式三、原型模式的适用场景四、原型模式的实现1.浅拷贝实现2.深拷贝实现五、总结一、前言 单例模式可以避免重复创建消耗资源的对象,但是却不得不共用对象。若是...
    99+
    2022-11-12
  • Java结构型设计模式之装饰模式详解
    目录介绍实现优缺点介绍 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更灵活。 主要解决:我们扩展一个类常使用继承方式实现,由于继承为类引入静态特征,...
    99+
    2023-05-14
    Java设计模式装饰模式 Java装饰模式
  • Java结构型设计模式之组合模式详解
    目录组合模式应用场景优缺点主要角色组合模式结构分类透明组合模式创建抽象根节点创建树枝节点创建叶子节点客户端调用安全组合模式创建抽象根节点创建树枝节点创建叶子节点客户端调用组合模式 组...
    99+
    2022-11-13
  • Javascript设计模式之原型模式详细
    目录1、原型模式示例一示例二示例三2、观察者模式1、原型模式 原型模式用于在创建对象时,通过共享某个对象原型的属性和方法,从而达到提高性能、降低内存占用、代码复用的效果。 示例一 ...
    99+
    2022-11-12
  • JavaScript设计模式之原型模式详情
    目录前言案例回顾原型的拓展前言 设计模式呢最多的可能是用到类,我们去通过类来封装一些实用的方法,通过设计模式去实现各个方法之间的解耦等,由于JS中的继承是用原型链继承的,所以原型模式...
    99+
    2022-11-13
  • Java设计模式之原型模式的示例详解
    目录定义案例需求方案一方案二对比分析总结 定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 即实现了一个原型接口,该接口用于创建当前对象的克隆,当直接创建对象的代...
    99+
    2022-11-13
  • Java 深入探讨设计模式之原型模式篇
    目录传统方式原型模式基本介绍原型模式在spring框架中源码分析深入讨论-浅讨论和深拷贝原型模式的注意事项和细节传统方式 克隆羊问题 现在有一只羊 tom,姓名为: tom,年龄为:...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作