• 设计模式-原型模式


    原型模式

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

    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);
        }
    
    书山有路勤为径,学海无涯苦作舟
  • 相关阅读:
    关于vivado----xdc文件时钟约束的初识
    Xilinx FPGA开发环境vivado使用流程
    GTX_SDI搭建流程
    SDI core端口说明
    Vivado中ILA的使用
    SDI初识
    BeautifulSoup库children(),descendants()方法的使用
    阅读OReilly.Web.Scraping.with.Python.2015.6笔记---BeautifulSoup---findAll
    初次使用CentOs7遇到的问题
    Centos7安装WPS和截图工具shutter
  • 原文地址:https://www.cnblogs.com/javammc/p/14939591.html
Copyright © 2020-2023  润新知