星空网 > 软件开发 > ASP.net

原型模式★★★☆☆

一、什么是原型模式

通过复制一个已存在对象来生成一个新对象,被复制的对象称为原型;

二、补充说明

1、JAVA中Object的clone方法已经为什么提供了复制对象的实现,且该方法为本地方法,性能好,在需要大量复制对象的情况,使用clone创建对象比new效率高;

补充下深拷贝和浅拷贝,深拷贝是通过拷贝内存(包括引用的对象)实现对象的创建;浅拷贝不拷贝引用的对象,但拷贝了引用的值,如果类的成员属性中都是基本类型,不含对象,也是可以达到深拷贝的效果;深拷贝可以通过将对象序列化成字节流以及反序列化实现,浅拷贝直接调用clone即可;

2、使用原型模式创建对象是没有调用类的构造方法的;

三、角色

原型角色(ps,也可以搞成两个,如抽象原型角色以及各个具体实现原型角色)

四、JAVA实现例子

java已经很好的支持原型模式了,使用很简便,如下类,实现了Cloneable接口,即成了一个原型;

package com.pichen.dp.creationalpattern.prototype;public class Cell implements Cloneable{  private int cellId;  public int getCellId() {    return cellId;  }  public void setCellId(int cellId) {    this.cellId = cellId;  }  public Cell(int id) {    this.cellId = id;  }  @Override  public Object clone() throws CloneNotSupportedException  {    System.out.println("clone a cell obj.");    return (Cell) super.clone();  }}

使用原型,复制10个拷贝:

package com.pichen.dp.creationalpattern.prototype;public class Main {  public static void main(String[] args) throws CloneNotSupportedException {    Cell prototypeCell = new Cell(888);    for(int i = 0; i < 10; i++){      Cell copyCell = (Cell) prototypeCell.clone();      System.out.println(copyCell.hashCode() + ":" + copyCell.getCellId());    }  }}

观察打印结果,hashcode不同,对象成员属性一致,复制成功:

clone a cell obj.25840096:888clone a cell obj.33040770:888clone a cell obj.23930419:888clone a cell obj.15142448:888clone a cell obj.22316618:888clone a cell obj.3969559:888clone a cell obj.10175206:888clone a cell obj.21307627:888clone a cell obj.24389376:888clone a cell obj.11317592:888

 




原标题:原型模式★★★☆☆

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

THE联盟:https://www.goluckyvip.com/tag/26089.html
邮件回复率:https://www.goluckyvip.com/tag/2609.html
Thieve:https://www.goluckyvip.com/tag/26090.html
Thinx:https://www.goluckyvip.com/tag/26091.html
Thirstii:https://www.goluckyvip.com/tag/26092.html
This is Ground:https://www.goluckyvip.com/tag/26093.html
2022世界杯门票如何买?:https://www.vstour.cn/a/363182.html
沈阳到本溪的距离有多远?(详细路线及交通方式):https://www.vstour.cn/a/363183.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流