Инструменты пользователя

Инструменты сайта


pattern_prototype

Назад

Паттерн Прототип позволяет создать экземпляры классов копируя существующие экземпляры.

Используется в тех случаях, когда создание экземпляра класса требует больших затрат ресурсов или занимает много времени.

public interface Prototype
{
    public Prototype doClone();
}
 
class Person implements Prototype
{
 
    String name;
 
    public Person(String name)
    {
        this.name = name;
    }
 
    @Override
    public Prototype doClone()
    {
        return new Person(name);
    }
 
    public String toString()
    {
        return "Его завут " + name;
    }
}
 
class Dog implements Prototype
{
 
    String sound;
    public Dog(String sound)
    {
        this.sound = sound;
    }
 
    public Prototype doClone()
    {
        return new Dog(sound);
    }
 
    public String toString()
    {
        return "Голос " + sound;
    }
}
Мain
class Мain
{
 
    public static void main(String[] args)
    {
 
        Person person1 = new Person("Вася");
        System.out.println("Персонаж 1:" + person1);
        Person person2 = (Person) person1.doClone();
        System.out.println("Персонаж 2:" + person2);
 
        Dog dog1 = new Dog("Гав гав!");
        System.out.println("dog 1:" + dog1);
        Dog dog2 = (Dog) dog1.doClone();
        System.out.println("dog 2:" + dog2);
 
    }
}
Результат
Персонаж 1:Его завут Вася
Персонаж 2:Его завут Вася
dog 1:Голос Гав гав!
dog 2:Голос Гав гав!