Java设计模式-5-原型模式
2015-02-24 18:19
239 查看
一、介绍
原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:
1、实现Cloneable接口。
2、重写Object类中的clone方法。
二、UML类图
三、代码实现
四、其他
4.1、深拷贝与浅拷贝:
Object类的clone()方法只会拷贝对象中的基本的数据类型,对于数组、容器对象、引用对象等都不会拷贝,这就是浅拷贝。【会发生深拷贝的有Java中的8种基本类型以及他们的封装类型,另外还有String类型,其余的都是浅拷贝。】如果要实现深拷贝,必须将原型模式中的数组、容器对象、引用对象等另行拷贝。例如:
原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:
1、实现Cloneable接口。
2、重写Object类中的clone方法。
二、UML类图
三、代码实现
class Prototype implements Cloneable { public Prototype clone() { Prototype prototype = null; try { prototype = (Prototype) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return prototype; } } class ConcretePrototype extends Prototype { public void show() { System.out.println("原型模式实现类"); } } public class Client { public static void main(String[] args) { ConcretePrototype cp = new ConcretePrototype(); for (int i = 0; i < 10; i++) { ConcretePrototype clonecp = (ConcretePrototype) cp.clone(); clonecp.show(); } } }
四、其他
4.1、深拷贝与浅拷贝:
Object类的clone()方法只会拷贝对象中的基本的数据类型,对于数组、容器对象、引用对象等都不会拷贝,这就是浅拷贝。【会发生深拷贝的有Java中的8种基本类型以及他们的封装类型,另外还有String类型,其余的都是浅拷贝。】如果要实现深拷贝,必须将原型模式中的数组、容器对象、引用对象等另行拷贝。例如:
public class Prototype implements Cloneable { private ArrayList list = new ArrayList(); public Prototype clone(){ Prototype prototype = null; try{ prototype = (Prototype)super.clone(); prototype.list = (ArrayList) this.list.clone(); }catch(CloneNotSupportedException e){ e.printStackTrace(); } return prototype; } }由于ArrayList不是基本类型,所以成员变量list,不会被拷贝,需要我们自己实现深拷贝。但,Java提供的大部分容器类都已经实现了Cloneable接口,所以实现深拷贝not very difficult。
相关文章推荐
- Java设计模式(11) —— 原型
- java设计模式---Prototype Pattern---原型模式(复制建立对象)
- java设计模式(五)创建者模式和原型模式
- JAVA设计模式(5)-原型模式 Prototype
- Java设计模式 创建模式-原型模式(Prototype)
- Java设计模式(二)Prototype(原型),Builder和Singleton(单态)
- java设计模式(原型模式)
- 设计模式(五)----- 原型模式(Prototype)----(JAVA版)
- JAVA设计模式五--Prototype(原型模式)
- Java与设计模式(05)--原型模式
- java 设计模式学习笔记(8) - 原型模式
- java设计模式--原型设计模式 Prototype
- Java设计模式 - Prototype(原型模式)
- JAVA设计模式 — 原型模式(Prototype)
- Java设计模式:Prototype(原型)
- java设计模式连载(4) --原型模式
- java23种设计模式之原型模式(Prototype)
- java设计模式--原型设计模式 Prototype
- java设计模式——原型模式(Prototype)
- Java:设计模式之原型模式(Prototype)