Встречается на 23% собеседований по C#

Какие знаешь паттерны проектирования

Паттерны проектирования — это проверенные решения типовых проблем в разработке ПО. Основные группы:

Порождающие (создание объектов):

  • 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<int> list); }
public class QuickSort : ISortStrategy { ... }
public class Sorter {
    private ISortStrategy _strategy;
    public void SetStrategy(ISortStrategy strategy) => _strategy = strategy;
    public void Sort(List<int> list) => _strategy.Sort(list);
}

Паттерны улучшают читаемость, расширяемость и поддерживаемость кода.

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы