zoukankan      html  css  js  c++  java
  • 设计模式-原型模式

    原型模式

    定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    Java 中的 Object 类提供了浅克隆的 clone() 方法,他执行得是浅拷贝,也就是说如果是引用类型得对象,只是会拷贝引用。

    使用场景:

    • 初始化很花时间,很废资源的时候,通过原型拷贝可以避免这些消耗
    • 通过new一个对象需要非常繁琐的数据准备或访问权限,可以使用原型模式
    • 一个对象在提供给其他对象使用,其他对象可能修改其值时,可以通过原型模式拷贝一个对象提供给他,保护原对象

    原型模式的克隆分为浅克隆和深克隆。

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

    优点:

    • 虚拟机直接复制内存块执行,速度比使用new快
    • 可以基于原型,快速得创建一个对象,而无需知道细节
    • 可以运行时动态得获取对象的类型和状态,从而创建一个对象。

    缺点:

    • 实现深拷贝比较困难,代码量会增大很多

    代码示例:

    public class Prototype implements Cloneable {
    
        public Prototype() throws InterruptedException {
            System.out.println("构建Prototype对象");
            Thread.sleep(3000);
            System.out.println("构建Prototype对象完成");
        }
    
        @Override
        public Prototype clone() throws CloneNotSupportedException {
            return (Prototype) super.clone();
        }
    }
    
     public static void main(String[] args) throws InterruptedException, CloneNotSupportedException {
            Prototype prototype=new Prototype();
            System.out.println(prototype);
            Prototype clone = prototype.clone();
            System.out.println(clone);
        }
    
    书山有路勤为径,学海无涯苦作舟
  • 相关阅读:
    洛谷春季多校第四场
    HZNU Training 8 for Zhejiang Provincial Competition 2020
    HZNU Training 6 for Zhejiang Provincial Competition 2020
    二分图
    HZNU Training 5 for Zhejiang Provincial Competition 2020
    洛谷春季 ACM 多校训练第二周
    HZNU Training 2 for Zhejiang Provincial Competition 2020
    TestNG入门教程-12-Java代码执行testng.xml和失败后重跑
    eclipse导出可执行jar包步骤
    创建可执行的JAR包并运行
  • 原文地址:https://www.cnblogs.com/javammc/p/14939591.html
Copyright © 2011-2022 走看看