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

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

    Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
     
      在JAVA语言中使用原型模式是非常简单的,这是因为Object类当中提供了一个本地方法clone,而JAVA中的任何类只要实现了Cloneable标识接口,就可以使用clone方法来进行对象的拷贝。

    优点:

      使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。

           使用原型模式的另一个好处是简化对象的创建,使得创建对象就像我们在编辑文档时的复制粘贴一样简单。

    注意事项:

    • 使用原型模式复制对象不会调用类的构造方法。因为对象的复制是通过调用Object类的clone方法来完成的,它直接在内存中复制数据,因此不会调用到类的构造方法。不但构造方法中的代码不会执行,甚至连访问权限都对原型模式无效。还记得单例模式吗?单例模式中,只要将构造方法的访问权限设置为private型,就可以实现单例。但是clone方法直接无视构造方法的权限,所以,单例模式与原型模式是冲突的,在使用时要特别注意。
    • 深拷贝与浅拷贝。Object类的clone方法只会拷贝对象中的基本的数据类型,对于数组、容器对象、引用对象等都不会拷贝,这就是浅拷贝。如果要实现深拷贝,必须将原型模式中的数组、容器对象、引用对象等另行拷贝。
  • 相关阅读:
    分组取最大值SQL 牛XXXX啊 我艹
    windows自带的可生成各种数据库连接字符串工具打开方法
    ashx.cs 读写session
    ASP.NET温故而知新学习系列之深度剖析ASP.NET架构—ASP.NET请求的处理过程(一)
    为什么从5000个数中找出10个最大的堆排序最快?
    net自带wsdl.exe的用法与参数说明
    负载均衡的集中实现方式
    18款 非常实用 jquery幻灯片图片切换
    MSSQL 导入用法总结 太方便了
    爱的无助
  • 原文地址:https://www.cnblogs.com/yang-lq/p/7809083.html
Copyright © 2011-2022 走看看