Ответы пользователя по тегу Паттерны проектирования
  • Альтернатива Singleton?

    serginhold
    @serginhold
    Единственный вариант, который мне известен, это через внедрение зависимостей.
    Но я не представляю в какой части приложения это делают. Нужно создать подключение к БД в front-controller и поместить в DI-контейнер, и в дальнейшем использовать ? Или как ?

    почитай что-нибудь нормальное про di.

    контейнер создается при старте приложения,
    в нем создаешь экземпляр подключения к бд:
    $container->set('db', function () use ($container) {
        return new DbConnection($container->get('config')['db']);
    });

    потом подключение передаешь в те сервисы, где оно нужно:
    $container->set('MyService', function () use ($container) {
        return new MyService($container->get('db'));
    });


    как пример где это происходит: www.slimframework.com/docs/v4/concepts/di.html
    Ответ написан
    2 комментария
  • Каким должен быть паттерн Adapter?

    serginhold
    @serginhold
    Адаптер адаптирует интерфейс..

    Допустим есть класс для форматирования текста TextFormatter, и есть у него метод format().
    По какой-то причине в проекте решили отказаться от этого класса, и использовать другой NewFormatter, типа другой на много лучше и няшный весь такой, но у него нет метода format(), у него есть метод formatText().
    И чтобы по всему проекту не искать вызов старого класса, правя кучу кода, можно написать адаптер, подменив им старый класс.
    Пусть будет NewTextFormatterAdapter. У которого пишем метод format(), в котором идёт вызов нового класса, что-то вроде:
    return this->newFormatter->formatText();
    Ответ написан
    6 комментариев