原始模型模式:
<o:p> 参考书籍:阎老师的<<java与模式>></o:p>
<o:p>网络文章:追mme与java的23个模式
</o:p>
定义:通过一个原始模型的对象来指明索要创建的类型 然后用复制这个原始类型的方法创造出更多的同类型的对象
<o:p> </o:p>
个人理解:
我觉的要理解原始模型模式 首先 有两个概念要搞清楚:
第一 对象引用
第二 复制
---------------------------------------------我是分割线-----------------------------------------
1:对象引用
对象引用:主要是指对象在堆栈里面的互相引用 其实并没有占用多余的内存空间 只是在栈空间了多少设置了一个引用
EX:
A a = new A();
A b = a ;
这样的过程 实际就是 第一步: 在堆里面创建了一个对象A 同时在栈里面创建了引用a
第二步:在栈里面创建一个引用b 指向了生成的a的实例
所以如果b对象里面的属性改变了 那a对象里面的属性也就跟着改变了
在java里面没有指针的概念 但是有句柄的概念 如果传递了一个句柄 实际就是传递了这个对象的引用。
所以如果你建的类 里面存在循环调用 如果实例化的话 就会把栈空间消耗完
java.lang.StackOverflowError
---------------------------------------------我是分割线-----------------------------------------
2:复制
复制
<!---->l <!---->应该是相对于引用来说的
<!---->l <!---->复制包括 浅复制 和深复制
---------------------------------------------我是分割线-----------------------------------------
浅复制:
浅复制在java中的实现就是object 的clone()方法
Java里面所有的类都继承了object类
如果这个要想能够复制 还必须实现 cloneable接口(里面什么也没有 但是如果不实现这个接口的话 使用object.clone()方法的时候 就会抛出cloneNotSupportException的异常)
现在假设 A实现了cloneable接口
EX:
A a = new A();
A b = a.clone();
第一步 在内存里面创建一个a 对象
第二步 复制一个a对象 传递给b
这个时候 a 里面的基本类型和b的基本类型是一样的 但是存放在不同的内存地址上
所以 此时修改a的基本属性以后 b的基本属性是不会变化的 这就是复制
由 浅复制 顾名思义 就是复制的很基本 复杂的基本类型就不复制了
所以如果A类里面有比较复杂的人为创建的对象的话 浅复制 还是只是建立一个引用没有复制具体的内容
---------------------------------------------我是分割线-----------------------------------------
深复制:
相对于浅复制来说的 :他能够避免掉浅复制不能完全复制复杂对象的缺点
在java中实现深复制是使用serializable 接口
EX:
A a = new A();
ByteArrayOutputStream bos = new ByteArrayOutputStream();<o:p></o:p>
ObjectOutputStream oos = new ObjectOutputStream(bos);<o:p></o:p>
oos.writeObject(obj);<o:p></o:p>
ByteArrayInputStream ois = new ByteArrayInputStream(bos.toByteArray());
A b = (A)ois.readObject();
<o:p> </o:p>
因为在流传输的过程中已经和jvm 脱离了 所以复制的东西全部都以 流的形式出去了 脱离了jvm 当重新再被读近来的时候 就是一个新的对象了。
这里的所有都是要在内存里面重新实例化的 所以就是深复制
<o:p> ---------------------------------------------我是分割线-----------------------------------------</o:p>
引用:
4、PROTOTYPE―跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要)
原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。<o:p></o:p>
<o:p> </o:p> ---------------------------------------------我是分割线-----------------------------------------
在这里面作者把情话作为一个要复制的对象,感觉上面和原始模型模式有些勉强。<o:p></o:p>
Mm最近倒霉 手机丢了 为了不让他们家里人发现 mm要求你给他买一个一模一样的手机来蒙横家里人 <o:p></o:p>
如果你有mm手机的原始模型你复制一个就可以 如果没有 就花点银子到商店里面去买一个 这时候对应得手机的类就是一个原始模型类 需要手机的时候 生产线装配一部就可以了
分享到:
相关推荐
本篇将基于提供的内容简要介绍Java的五种设计模式:工厂模式、建造者模式、工厂方法模式、原始模型模式和单例模式。 1. **工厂模式**: 工厂模式是一种简单的创建型设计模式,它提供了一个创建对象的接口,但允许...
本文将深入解析五个常见的设计模式,分别是工厂模式、建造者模式、工厂方法模式、原始模型模式和单例模式。 1. **工厂模式**: 工厂模式是一种简单的创建型模式,它定义了一个创建对象的接口,但由子类决定要实例化...
原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。 5. 单例模式(Singleton Pattern) 单例模式...
1:模式的简史和形而上学;2:统一建模语言UML简介;...20:原始模型模式;21:javabean冷藏和解冻;22:适配器模式;23:缺省适配器模式;24:合成模式;25:装饰模式;26:设计模式在JAVA I/O设计原则;28:代理模式;....
原始模型模式是通过克隆已有对象来创建新对象的设计模式。它提供了一种通过复制现有的对象来创建新对象的方式,减少了创建新对象的复杂度,尤其适用于对象创建成本较高的情况。原始模型模式需要提供一个克隆方法,...
4. 原始模型模式(Prototype模式):原始模型模式允许通过复制原型对象来创建新对象,提供了动态地增加或减少产品类的能力,且无需关心产品的具体实现细节。 5. 单例模式:单例模式保证一个类只有一个实例,并提供...
原始模型模式通过克隆已有对象来创建新对象,简化了对象的创建过程。客户端可以要求一个原型对象克隆自身,以得到与原型相同或相似的新对象,而无需知道具体实现细节。 5. 单例模式(Singleton): 单例模式确保...
原始模型模式使用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象;单例模式保证一个类只有一个实例,并提供一个全局访问点。 结构型模式关注类和对象的组合。适配器模式允许不兼容的接口进行合作,...
<br>第一部份、UML和模式介绍 com.javapatterns.uml 统一建模语言UML... com.javapatterns.prototype 原始模型模式 com.javapatterns.serializable 专题:JavaBean的“冷藏”和“解冻”
java和设计模式ppt包含工厂模式、建造模式、原始模型模式、单例模式、结构模式、适配器、桥梁模式、合成模式、装饰模式、门面模式、享元模式、代理模式、行为模式、解释器模式、迭代子模式、调停者模式、备忘录模式...
7. **原始模型模式(Prototype)**:通过克隆原型对象来创建新对象,简化了对象的创建过程。原始模型模式适用于需要频繁创建相似对象的情况,但要求所有类都实现克隆接口。 8. **代理模式(Proxy)**:为其他对象...
在提供的"RFM模型(原始数据聚类).xml"文件中,很可能包含了原始的RFM数据,通过导入到SPSS中,我们可以进行数据的清洗、转换、聚类分析等一系列操作,最终得出有价值的客户群体划分。 通过RFM模型分析,企业不仅...
该方案的核心是在模式匹配过程中,利用已匹配的元素对对原始匹配算法进行优化,使其更好地适应数据源的本地化特性,从而提高匹配的准确性。在实际的“餐饮信息管理”案例中,实验结果显示,该方法的模式匹配效果显著...
然而,需要注意的是,任何对原始模型的修改都可能会影响游戏的兼容性和稳定性,因此在进行修改时需谨慎操作。 在压缩包子文件的“模型编辑”目录下,可能包含了mdlvis的安装程序、教程文档、示例模型文件以及其他...
此外,该模型在海洋学中也有重要应用,可以揭示海流模式,辅助预测天气和海平面变化。 四、文件构成 压缩包中的“XGM2019”可能是模型的基础数据文件,包含重力场的原始数据;“XGM2019e”可能代表模型的增强版或...
多级注意力机制是一种先进的机器学习技术,它通过模拟人类的注意力分布来提高模型对于...结合原始和划分好的数据集,这种模型能够为用户提供快速、准确的预测结果,适用于需要处理大量数据和追求高效率的各种应用场景。
深度学习模型,如CrowdNet,通过学习大量的标注图像,学习从原始像素到人群密度分布的映射。这种映射过程涉及到复杂的特征提取,例如多尺度信息处理,以便更准确地识别不同大小和形状的人头。 3. **CrowdNet模型...
通过时间序分析,可以对数据中的规律和模式进行识别,从而对未来数据进行预测和分析。 二、ARIMA模型的原理 ARIMA模型是AutoRegressive Integrated Moving Average的缩写,是一种常用的时间序模型。ARIMA模型由三...