Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype.
Participants
- Prototype: declares an interface for cloning itself
- ConcretePrototype: implements an operation for cloning itself
- Client: creates a new object by asking a prototype to clone itself
Code
public class Main { public static void main(String[] args) { ConcretePrototype1 p1 = new ConcretePrototype1("I"); ConcretePrototype1 c1 = (ConcretePrototype1) p1.clone(); System.out.println("Cloned: " + c1.getId()); ConcretePrototype2 p2 = new ConcretePrototype2("II"); ConcretePrototype2 c2 = (ConcretePrototype2) p2.clone(); System.out.println("Cloned: " + c2.getId()); } } public abstract class Prototype { private String id; public Prototype(String id) { this.id = id; } public String getId() { return id; } public abstract Prototype clone(); } public class ConcretePrototype1 extends Prototype { public ConcretePrototype1(String id) { super(id); } @Override public Prototype clone() { return new ConcretePrototype1(getId()); } } public class ConcretePrototype2 extends Prototype { public ConcretePrototype2(String id) { super(id); } @Override public Prototype clone() { return new ConcretePrototype2(getId()) ; } }
Output
Cloned: I Cloned: II
Top comments (0)