码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-原型模式

时间:2021-06-28 19:24:46      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:缺点   修改   one   初始   访问权限   优点   场景   override   数据   

原型模式

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

技术图片

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);
    }

设计模式-原型模式

标签:缺点   修改   one   初始   访问权限   优点   场景   override   数据   

原文地址:https://www.cnblogs.com/javammc/p/14939591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!