06原型模式
来源:互联网 发布:mac 磁盘图标 名称 编辑:程序博客网 时间:2024/06/07 07:19
原型模式 -- 如何快速且精准地复制一个对象 (注意!复制出来的对象不是同一个)
<设计模式其实很简单>笔记
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
②代码:
//抽象原型类public abstract class Prototype{private String id;//构造函数public Prototype(String id){this.id = id;}//id变量的get方法public String getId(){return id;}//抽象的Clone方法public abstract Prototype Clone();}//具体原型类public class ConcretePrototype1 extends Prototype{public ConcretePrototype1(String id){super(id);}//覆盖父类抽象方法@Overridepublic Prototype Clone(){try{return (Prototype)this.clone(); //clone 方法不知道怎么来的..}catch(CloneNotSupportedException e){return null;}}}//客户端代码public static void main(String[] args){ConcretePrototype1 p1 = new ConcretePrototype1("1");ConcretePrototype1 p2 = (ConcretePrototype1)p1.Clone();try{System.out.println("拷贝的:" + p2.getId());}catch(NullPointerException e){ }}//Java 提供了 Cloneable 接口,实现后就能使用原型模式了 clone( );//原型模式不是线程安全的
③Java 深复制 浅复制
--浅复制
对于值类型的字段会进行逐位复制,对于引用类型的字段,则复制引用但不复制引用的对象。
--深复制
对于引用类型的对象的复制是将引用的变量指向一个新对象,而不是被引用的对象。
java 深复制数组
int[] a = new int[]{ 1,2,3,4 };
int[] b = new int[4];
System.arraycopy(a,0,b,0,4)
④适用情况:
--当要实例化的类是在运行时刻制定时。
--为了避免创建一个与产品类层次平行的工厂类层次时
--当一个类的实例只能有几个不同状态组合中的一种时。
⑤优点:
原型模式在实例化一个对象时隐藏了对象创建的具体细节。(通过已存在的对象copy一个),而且不用调用构造方法,提高运行的效率。
还有就是保存了原有对象的数据(值类型的数据,若是想让引用类型的属性也复制一份,则需要让这个引用类型的类也使用原型模式。再手动的将变量指向这个新的对象)
0 0
- 06原型模式
- 设计模式06_原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型 模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 开通csdn博客的第一天
- Android中显示Dialog的方法
- 调用android的Camera 执行结果没有回调onActivityResult()
- Transition-based Parsing 简介
- 利用双缓冲技术解决图像闪烁
- 06原型模式
- ios openssl rsa 加密问题
- libuv 在win10 vs各个版本编译静态库
- ant 打包android工程 的问题
- JSON 取值,麻烦大家帮我看看!
- 创建Qt项目之02(手动创建)
- go range
- 2016的最后一天
- 点击imageview跳转到另一个页面