Sobes.tech
Back to questions
Junior — Middle
64

Какие паттерны из каталога Геммата ты применяешь в своих проектах для решения типичных задач?

Companies where asked
Геомикс

Answer from AI

sobes.tech AI

В своих C# проектах я часто применяю следующие паттерны из каталога Гэммата для решения типичных задач:

  • Singleton — для обеспечения единственного экземпляра класса, например, для менеджера конфигурации или логгера.
  • Factory Method — для создания объектов без жесткой привязки к конкретным классам, что облегчает расширение и тестирование.
  • Observer — для реализации событийной модели, когда объекты подписываются на изменения состояния другого объекта.
  • Decorator — для динамического добавления функциональности объектам без изменения их кода.
  • Strategy — для выбора алгоритма поведения во время выполнения, например, разные способы сортировки или валидации.

Пример использования паттерна Strategy:

public interface ICompressionStrategy
{
    void Compress(string fileName);
}

public class ZipCompression : ICompressionStrategy
{
    public void Compress(string fileName) {
        Console.WriteLine($"Compressing {fileName} using ZIP");
    }
}

public class RarCompression : ICompressionStrategy
{
    public void Compress(string fileName) {
        Console.WriteLine($"Compressing {fileName} using RAR");
    }
}

public class CompressionContext
{
    private ICompressionStrategy _strategy;

    public CompressionContext(ICompressionStrategy strategy) {
        _strategy = strategy;
    }

    public void SetStrategy(ICompressionStrategy strategy) {
        _strategy = strategy;
    }

    public void CreateArchive(string fileName) {
        _strategy.Compress(fileName);
    }
}

Такой подход позволяет гибко менять поведение программы без изменения клиентского кода.