/** * 原型 * @author swt */ public class Prototype implements Cloneable { @Override protected Prototype clone() { Prototype prototype = null; try { prototype = (Prototype) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return prototype; } }
/** * 原型实现类 * @author swt */ public class ConcretePrototype extends Prototype { public void show() { System.out.println("原型模式实现类 " + this.toString()); } }
public class Main { public static void main(String[] args) { ConcretePrototype concretePrototype = new ConcretePrototype(); for (int i = 0; i < 10; i++) { ConcretePrototype clonePrototype = (ConcretePrototype) concretePrototype.clone(); clonePrototype.show(); } } }
输出:
原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@4554617c 原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@74a14482 原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@1540e19d 原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@677327b6 原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@14ae5a5 原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@7f31245a 原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@6d6f6e28 原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@135fbaa4 原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@45ee12a7 原型模式实现类 com.swt.dp.factory.prototype.ConcretePrototype@330bedb4