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 :