All right let's try to summarize what we've learned about the prototype design pattern.
So first of all to implement a prototype all you have to do is you have to construct an object you can
partially constructed or you can fully constructed and then you can store it somewhere so that you can
replicate this.
And then the question is Well how do you clone the prototype and there are different ways of doing it.
One is where you implement deep copy yourself.
You implement the functionality yourself for example by making copy constructors all over the place
or making some sort of prototype interface and defining a deep copy member on that interface and then
implementing that interface in every single object of the entire Harkee that you want to copy and that
is perhaps too complicated a way of doing a prototype.
So the simple way is to take the object graph serialize it and realize it symbolizes are very useful
because they actually traverse the entire object graph and so this is a nice and simple way of actually
making a deep copy of an object and once you've made the copy of the object all that remains is for
you to customize the resulting instance and actually start using it in your code.