Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

The Prototype pattern is a creational design pattern that allows an object to clone itself. This pattern is used when the type of objects to create is determined by a prototypical instance, which is cloned to produce new objects.

This pattern is especially useful when you want to avoid subclasses of an object creator in the client application. It provides a simple way to copy existing objects independent of the specific classes of the objects.

In the Prototype pattern, you would have an abstract base class, and concrete classes would implement a clone() method that creates a new instance of itself. This can be done in Java, for example, by implementing the Cloneable interface and overriding the clone() method from the Object class.

Here's a simple example:

abstract class Prototype implements Cloneable {
    abstract Prototype clonePrototype();
}

class ConcretePrototype extends Prototype {
    private String field;

    ConcretePrototype(String field) {
        this.field = field;
    }

    @Override
    Prototype clonePrototype() {
        try {
            return (ConcretePrototype) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public String toString() {
        return field;
    }
}

public class Client {
    public static void main(String[] args) {
        ConcretePrototype prototype1 = new ConcretePrototype("Prototype 1");
        ConcretePrototype prototype2 = (ConcretePrototype) prototype1.clonePrototype();

        System.out.println(prototype1);
        System.out.println(prototype2);
    }
}

In this example, ConcretePrototype is the concrete class implementing the clonePrototype() method. This method creates a new instance of ConcretePrototype by calling the super.clone() method, which effectively creates a copy of the current object.

The Client class shows how to use the Prototype pattern: by cloning prototype1, you get a prototype2 which is a copy of prototype1.

The Prototype pattern is particularly useful when object initialization is costly, and you anticipate making many copies of your objects, thereby saving significant resources.

  • No labels