| 订阅 | 在线投稿
分享
 
 
 

原始模型(Prototype)模式学习笔记

来源:互联网网民  宽屏版  评论
2006-09-15 06:27:57

原始模型模式其实就是“克隆”,当我们的系统需要对模型对象(MVC中的M)复制一份的时候非常有用。采取这种模式就免去了我们必须知道一些细节才能实例化。

原始模型模式分为两种两种表现形式:第一种是简单形式,第二种是登记形式,区别无非在于后者有一个管理器。管理器的好处是可以防止重复复制,减少资源浪费。

说到“克隆”就不能不说浅复制和深复制

浅复制(浅克隆)是指只复制当前对象和其基本数据类型的值,对其属性域(字段)的对象引用不复制。如private int i;值会被复制,而private String s;则只是复制了一下引用,两者仍然指向同一个实例,说白了仍然是复制了一下值,只不过复制的是地址值(理解java的值传递就比较容易理解这个)

深复制(深克隆)相反,将对象也复制一份。这里就要小心,是否出现循环的情况。用序列化+io操作可以轻易实现深复制。只需要被复制的对象实现Serializable接口。问题:如果属性域对象没有实现Serializable接口呢?

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
原始模型模式其实就是“克隆”,当我们的系统需要对模型对象(MVC中的M)复制一份的时候非常有用。采取这种模式就免去了我们必须知道一些细节才能实例化。 原始模型模式分为两种两种表现形式:第一种是简单形式,第二种是登记形式,区别无非在于后者有一个管理器。管理器的好处是可以防止重复复制,减少资源浪费。 说到“克隆”就不能不说浅复制和深复制 浅复制(浅克隆)是指只复制当前对象和其基本数据类型的值,对其属性域(字段)的对象引用不复制。如private int i;值会被复制,而private String s;则只是复制了一下引用,两者仍然指向同一个实例,说白了仍然是复制了一下值,只不过复制的是地址值(理解java的值传递就比较容易理解这个) 深复制(深克隆)相反,将对象也复制一份。这里就要小心,是否出现循环的情况。用序列化+io操作可以轻易实现深复制。只需要被复制的对象实现Serializable接口。问题:如果属性域对象没有实现Serializable接口呢?
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有