Какие паттерны проектирования знаете? Расскажите про Proxy, Factory, Strategy.
Ответ от нейросети
sobes.tech AI
Вот краткое описание трёх паттернов проектирования:
-
Proxy (Заместитель) — объект, который контролирует доступ к другому объекту, добавляя дополнительную логику (например, ленивую инициализацию, кэширование, контроль доступа).
Пример: прокси для ленивой загрузки ресурса.
-
Factory (Фабрика) — паттерн для создания объектов без указания конкретного класса создаваемого объекта. Позволяет создавать объекты через общий интерфейс.
Пример: фабрика, создающая разные виды документов по типу.
-
Strategy (Стратегия) — паттерн, позволяющий выбирать алгоритм поведения во время выполнения, инкапсулируя разные алгоритмы в отдельные классы.
Пример: разные алгоритмы сортировки, выбираемые в зависимости от данных.
Пример Proxy на Java:
interface Image {
void display();
}
class RealImage implements Image {
private String filename;
RealImage(String filename) { this.filename = filename; loadFromDisk(); }
void loadFromDisk() { System.out.println("Loading " + filename); }
public void display() { System.out.println("Displaying " + filename); }
}
class ProxyImage implements Image {
private RealImage realImage;
private String filename;
ProxyImage(String filename) { this.filename = filename; }
public void display() {
if (realImage == null) {
realImage = new RealImage(filename);
}
realImage.display();
}
}
Такой прокси откладывает загрузку изображения до момента вызова display().