zoukankan      html  css  js  c++  java
  • 原型模式 (学习笔记4)

    原文地址:http://c.biancheng.net/view/1343.html

    使用场景:

    1. 通过new 创建新的副本非常麻烦,需要传入很多值,且这些值大部分是不变的。
    2. 需要不停的高效的创建新的副本来满足业务需求

    克隆:

    1. 浅克隆:生成一个新的副本,但是非基本类型的数据还是指向原内存地址。
    2. 深克隆:生成一个新的副本,包括非基本类型的数据也是新的。

    object.clone()属于浅克隆,只有实现Cloneable接口才是深克隆。

    实现深度克隆还有:

    1. 通过构造函数实现
    2. Apache Commons Lang序列化 SerializationUtils.clone(obj)
    3. Gson, Jackson, fastjson等。

    优点:

    1. JAVA自带的克隆模式是基于内存二进制流,在性能方面比new要高出许多。
    2. 可以使用深度克隆的方式保留一份历史副本,以便在需要的时候可以做到操作回退。

    结构图:
    image
    示例代码:

    //具体原型类
        class Realizetype implements Cloneable {
            Realizetype() {
                System.out.println("具体原型创建成功!");
            }
            public Object clone() throws CloneNotSupportedException {
                System.out.println("具体原型复制成功!");
                return (Realizetype) super.clone();
            }
        }
        //原型模式的测试类
        public class PrototypeTest {
            public static void main(String[] args) throws CloneNotSupportedException {
                Realizetype obj1 = new Realizetype();
                Realizetype obj2 = (Realizetype) obj1.clone();
                System.out.println("obj1==obj2?" + (obj1 == obj2));
            }
        }



  • 相关阅读:
    vue 基础 模板
    常见的JS语言错误总汇
    面向对象两大编程思想
    15条你可能不知道的JS高效技巧
    django简介
    ping连通性
    IP地址解释
    web网页请求以及网络联网的一些过程
    HTTP和HTTPS协议
    TCP和UDP
  • 原文地址:https://www.cnblogs.com/huiy/p/15554928.html
Copyright © 2011-2022 走看看