JAVA Means DURGA SOFT
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page 1
JAVA Means DURGA SOFT
Prototype Design Pattern
The prototype means making a clone. This implies cloning of an object to avoid creation.
If the cost of creating a new object is large and creation is resource intensive, we clone the
object. We use the interface Cloneable and call its method clone() to clone the object.
Problem: If you create a new object in regular manner based on the existing objects & its data
then it gives much burden to JVM because the new object has to fulfill all the formalities of
object creation from scratch level including constructor execution also.
Solution: Use Prototype design pattern, Which says create a new object through cloning
process which reduces burden on JVM by avoiding some formalities of object creation like
constructor execution.
Note: While creating java class object through cloning process the constructor will not be
executed in order to avoid the initialization again by the programmer.
Usage:
When creating an object is time consuming and a costly affair and you already have a most
similar object instance in hand, then you go for prototype pattern. Instead of going through a
time consuming process to create a complex object, just copy the existing similar object and
modify it according to your needs.
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page 2
JAVA Means DURGA SOFT
Rules to Follow To perform Cloning on Java Class Object: You can make a copy of any Java
object using the clone method.
E.g. JObj j1 = (JObj)j0.clone();
The clone method always returns an object declared to have a return type of Object. Thus you
must cast it to the actual type of the object that you are cloning. Three other significant
Restrictions apply to this method:
It is a protected method and can be called only from within the same class or a subclass.
You can clone only objects that are declared to implement the Cloneable interface. All
arrays are considered to implement the Cloneable interface.
Any object whose class is Object does not implement Cloneable and throws the
CloneNotSupported Exception.
Sample Code
// PrototypeTest.java
import java.lang.*;
class Test implements Cloneable
int x;
String s;
public Test(int y,String r)
this.x=y;
this.s=r;
System.out.println("Test: 2- arg Constructor");
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page 3
JAVA Means DURGA SOFT
public Object clone()
try
//ProtoType Pattern Logic
return super.clone();
catch(Exception e)
e.printStackTrace();
return null;
//Normal method to display Values
public String display()
return "Value of X ="+x+" & S ="+s;
public class PrototypeTest
public static void main(String[] args) throws Exception
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page 4
JAVA Means DURGA SOFT
Test t1=new Test(10,"Durga");// Object creation in Normal Way
System.out.println("Hadscode of T1 Object is : "+t1.hashCode());
System.out.println(t1.display());
Test t2=(Test)t1.clone();// Object through Cloning Process
System.out.println("Hadscode of T2 Object is : "+t2.hashCode());
System.out.println(t2.display());
//do some modifications
System.out.println("After Performing Modifications:");
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page 5
JAVA Means DURGA SOFT
t1.x=20;
System.out.println(t1.display());
System.out.println(t2.display());
Output
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page 6
JAVA Means DURGA SOFT
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page 7