Урок 4. Прототип (Prototype)
Введение
Паттерн "Прототип" (Prototype) — это порождающий паттерн проектирования, который используется для создания новых объектов путем копирования существующих. Этот паттерн особенно полезен, когда создание нового объекта является более затратным по времени или ресурсам, чем копирование уже существующего. Прототип позволяет избежать избыточного кода и упрощает создание объектов с одинаковыми параметрами.
Основные концепции
- Прототип:
-
Прототип — это интерфейс или абстрактный класс, который определяет метод для клонирования объектов. Все конкретные классы, которые реализуют этот интерфейс, должны предоставлять реализацию метода клонирования.
-
Конкретные прототипы:
-
Конкретные классы, которые реализуют интерфейс прототипа и предоставляют конкретные реализации метода клонирования.
-
Клиент:
- Клиент использует прототипы для создания новых объектов, вызывая метод клонирования.
Преимущества использования паттерна "Прототип"
- Упрощение создания объектов: Позволяет создавать объекты без необходимости знать их конкретные классы.
- Избежание затрат на создание: Копирование существующих объектов может быть более эффективным, чем создание новых.
- Гибкость: Легко добавлять новые типы объектов, просто создавая новые прототипы.
Пример использования
Рассмотрим пример, где у нас есть класс Car
, который имеет различные параметры, такие как модель и цвет. Мы создадим прототип для клонирования объектов Car
.
// Прототип
interface Prototype {
Prototype clone();
}
// Конкретный прототип
class Car implements Prototype {
private String model;
private String color;
public Car(String model, String color) {
this.model = model;
this.color = color;
}
public String getModel() {
return model;
}
public String getColor() {
return color;
}
@Override
public Prototype clone() {
return new Car(this.model, this.color);
}
@Override
public String toString() {
return "Car [model=" + model + ", color=" + color + "]";
}
}
// Использование прототипа
public class Main {
public static void main(String[] args) {
// Создание оригинального объекта
Car originalCar = new Car("Tesla Model S", "Red");
System.out.println("Original: " + originalCar);
// Клонирование объекта
Car clonedCar = (Car) originalCar.clone();
System.out.println("Cloned: " + clonedCar);
// Изменение параметров клонированного объекта
clonedCar = new Car("Tesla Model S", "Blue");
System.out.println("Modified Cloned: " + clonedCar);
}
}
Заключение
Паттерн "Прототип" является мощным инструментом для создания объектов путем клонирования существующих. Он позволяет разработчикам создавать новые объекты без необходимости знать их конкретные классы, что упрощает код и повышает его гибкость. Использование этого паттерна способствует улучшению структуры кода и облегчает его поддержку, особенно в системах, где создание объектов является затратным процессом.
пример
https://gitlab.com/synergy9980417/razdel2/7_4