Comments
This pattern creates the kind of object using its prototype. In other words, while creating the object of Prototype object, the class actually creates a clone of it and returns it as prototype.You can see here, we have used MemberwiseClone method to clone the prototype when required.
Code
{ // normal implementation public abstract Prototype Clone(); } public class ConcretePrototype1 : Prototype { public override Prototype Clone() { return (Prototype)this.MemberwiseClone(); // Clones the concrete class. } } public class ConcretePrototype2 : Prototype { public override Prototype Clone() { return (Prototype)this.MemberwiseClone(); // Clones the concrete class. } }