2009年4月6日星期一

JavaDesign_009:原型模式 Prototype(摘录+整理)

1. 特点
(1)根据一个对象的原型创建另外一个对象,并且完全copy原对象的所有属性,即克隆。

2. 关于clone()方法和
Cloneable接口
(1)clone()方法是java.lang.Object的一个protected 方法。
(2)Cloneable是一个标识接口。
(3)java.lang.Object并没有实现Cloneable这个标识接口。
(4) 如果调用某类的clone()方法,而该类没有实现Cloneable这个标识接口,会抛出CloneNotSupportedException。

3. 代码架构
(1)如果是接口
public interface Prototype extends Cloneable{
Prototype clone();
}
(2)如果是抽象类public abstract class AbstractPrototype implements Cloneable {
 public Object clone() {
  Object object = null;
  try {
  object = super.clone();
  } catch (CloneNotSupportedException exception) {
   System.err.println("
Abstract
Prototype is not Cloneable");
  }
  return object;
  }
}
4. clone()方法的实现必须满足3个条件
(1)x.clone() != x 。
(2)x.clone().getClass() == x.getClass() 。
(3)x.clone().equals(x) == true 。
注意,第3条涉及到equals()方法的实现,而equals()方法的实现又涉及到hashCode()方法的实现。
5. 与工厂模式的区别

6. 典型应用场景
参考文献:
1. 《设计模式》 板桥里人
2. 《Java与模式》 阎宏
3.
《Effective Java中文版》 潘爱民 译

没有评论: