Встречается на собеседованиях • сегодня
Какие знаешь паттерны проектирования
Паттерны проектирования — это проверенные решения типовых проблем в разработке ПО. Основные группы:
**Порождающие** (создание объектов):
- **Singleton** — гарантирует единственный экземпляр класса.
```csharp
public sealed class Singleton {
private static Singleton _instance;
private Singleton() {}
public static Singleton Instance => _instance ??= new Singleton();
}
```
- **Factory Method** — делегирует создание объектов подклассам.
**Структурные** (компоновка объектов):
- **Adapter** — адаптирует интерфейс класса под другой интерфейс.
- **Composite** — представляет объекты в виде древовидной структуры.
**Поведенческие** (взаимодействие объектов):
- **Observer** — уведомляет зависимые объекты об изменениях (например, события в C#).
- **Strategy** — инкапсулирует алгоритмы, делая их взаимозаменяемыми.
Пример **Strategy**:
```csharp
public interface ISortStrategy { void Sort(List list); }
public class QuickSort : ISortStrategy { ... }
public class Sorter {
private ISortStrategy _strategy;
public void SetStrategy(ISortStrategy strategy) => _strategy = strategy;
public void Sort(List list) => _strategy.Sort(list);
}
```
Паттерны улучшают читаемость, расширяемость и поддерживаемость кода.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
