现在的位置: 首页 > 综合 > 正文

设计模式之原型模式

2012年04月25日 ⁄ 综合 ⁄ 共 1431字 ⁄ 字号 评论关闭

什么是原型设计模式?

原型模式其实就是一个对象再创建另一个与原对象相同内容对象,而让创建过程不知道任何细节的方法.

为什么要使用原型设计模式?

在面向对象编程过程中常常会碰见需要复制对象的情况,所以这是我们就会使用原型模式,原型模式又叫克隆方法.

怎么使用原型设计模式?

原型模式原理其实很简单,例如我们有个Student.class要对它进行克隆,那么定义一个MyCloneAble的接口,接口中提供一个Clone()的方法,Student.class实现该接口,并在Clone()方法中返回被克隆的对象(克隆的对象即new出来把当前对象的值付给它即可.)基本UML

代码具体实现:

MyCloneAble.interface

public interface MyCloneable {
	public Object myClone();
}

Student.class

public class Student implements MyCloneable{
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public Object myClone() {
		// TODO Auto-generated method stub
		Student student = new Student();
		student.setAge(this.age);
		student.setName(this.name);
		return student;
	}
}

Main.class

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student s1 = new Student();
		s1.setAge(20);
		s1.setName("huangli");
		Student s2 = (Student)s1.myClone();
		
		System.out.println("name "+s2.getName()+" age "+s2.getAge());
	}

}

输出为

name huangli age 20 

java中的clone,在java中我们如果需要去clone一个对象就不需要去自己定义MyCloneAble接口了,因为Clone这个功能实在是太常用了,java的sdk早就为我们封装好了方法,而且使用起来也是很简单的.

java的sdk为我们提供了Cloneable接口,具体介绍如下

然后Object有一个clone()方法

具体实现克隆的做法要求是:

1,必须实现Cloneable接口(这个接口没有方法,只起到mark作用)

2,重写Object中clone()方法并将该方法权限改为public,其中里面的super()方法必须执行!该方法返回的对象即为clone对象。

浅克隆和深克隆

所谓的浅度克隆就是在克隆过程中只克隆了基本数据类型,对于类对象只克隆了该对象的引用而没有克隆对象本身。

深克隆呢,就是它不光克隆基本数据类型,对于类对象也一起克隆.如果想要实现深克隆,只需要对需要克隆的类内部类对象实行浅克隆即可.

抱歉!评论已关闭.