Встречается на собеседованиях • сегодня

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

В C# часто применяю следующие паттерны: **Singleton** - для единственного экземпляра класса: ```csharp public sealed class Singleton { private static Singleton _instance; private static readonly object _lock = new object(); private Singleton() { } public static Singleton GetInstance() { if (_instance == null) { lock (_lock) { if (_instance == null) { _instance = new Singleton(); } } } return _instance; } } ``` **Factory Method** - создание объектов через интерфейс: ```csharp public interface IProduct {} public class ConcreteProduct : IProduct {} public abstract class Creator { public abstract IProduct FactoryMethod(); } public class ConcreteCreator : Creator { public override IProduct FactoryMethod() => new ConcreteProduct(); } ``` **Repository** - абстракция доступа к данным: ```csharp public interface IRepository { void Add(T entity); T GetById(int id); } public class UserRepository : IRepository { // реализация работы с БД } ``` Также часто использую: - **Observer** для событийной модели - **Decorator** для динамического добавления функциональности - **Strategy** для замены алгоритмов - **Dependency Injection** как архитектурный паттерн Выбор зависит от задачи - важно не злоупотреблять паттернами там, где можно обойтись простым решением.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы