Program to demonstrate how to implement Prototype Design Pattern in Java.
Output of the program :
package com.hubberspot.designpattern.creational.prototype;
// 1. Create a class Dog implementing Cloneable
// interface
public class Dog implements Cloneable {
// 2. Create few properties to Dog object.
private String name;
private String breed;
// 3. Create a constructor for properties
// initialization
public Dog(String name, String breed) {
super();
this.name = name;
this.breed = breed;
}
// 4. Create getters and setters for the properties
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
// 5. Create a method which will create a
// prototype or clone of the object invoking
// this method
public Dog makeCopyOfDog() {
Dog clonedDog = null;
// 6. super.clone() returns clone of the object
// invoking it.
try {
clonedDog = (Dog) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return clonedDog;
}
public static void main(String[] args) {
// 7. Create a original dog
Dog originalDog = new Dog("Jimmy" , "Bulldog");
// 8. Create clone of dog created in step 7 by calling
// originalDog.makeCopyOfDog() method
Dog clonedDog = originalDog.makeCopyOfDog();
System.out.println("Original Dog's name is: " + originalDog.getName());
System.out.println("Original Dog's breed is: " + originalDog.getBreed());
System.out.println();
System.out.println("Cloned Dog's name is: " + clonedDog.getName());
System.out.println("Cloned Dog's breed is: " + clonedDog.getBreed());
}
}
Output of the program :
