Встречается на собеседованиях • сегодня
Приведи примеры шаблонов проектирования
**Singleton** - гарантирует единственный экземпляр класса:
```java
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
**Factory Method** - делегирует создание объектов подклассам:
```java
interface Product {}
class ConcreteProduct implements Product {}
abstract class Creator {
abstract Product factoryMethod();
}
class ConcreteCreator extends Creator {
Product factoryMethod() {
return new ConcreteProduct();
}
}
```
**Observer** - уведомляет подписчиков об изменениях:
```java
interface Observer {
void update();
}
class Subject {
private List observers = new ArrayList<>();
void addObserver(Observer o) {
observers.add(o);
}
void notifyObservers() {
observers.forEach(Observer::update);
}
}
```
**Decorator** - добавляет функциональность динамически:
```java
interface Component {
void operation();
}
class ConcreteComponent implements Component {
public void operation() { /*...*/ }
}
class Decorator implements Component {
private Component component;
Decorator(Component c) { this.component = c; }
public void operation() { component.operation(); }
}
```

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы