Когда использовать шаблон метода шаблона - PullRequest
2 голосов
/ 17 июля 2010

Привет, у меня есть проблема, когда я должен выполнить аналогичные шаги / действия (которые немного различаются) на разных наборах данных (данные могут немного отличаться также в отношении их структуры). Мне нужно выполнить несколько шагов: подключиться, проверить, при необходимости создать сообщения об ошибках, изменить структуру данных на заданный формат и вывести результаты.

Я смотрел на шаблонный шаблонный метод, который выглядит так, как будто бы он вполне вписался - это звучит правильно или будет лучший способ решения проблемы такого типа?

Я стремлюсь к тому, чтобы новые наборы данных можно было легко добавлять в систему без каких-либо нарушений, а также изменять отчеты об ошибках и т. Д., Не оказывая значительного влияния на систему.

Я использую php.

Ответы [ 2 ]

1 голос
/ 17 июля 2010

Метод стратегии хорошо работает с методом шаблона.

Метод шаблона определяет требования класса.Метод стратегии позволяет использовать объекты для определения поведения и определять их во время выполнения с помощью внедрения зависимостей.

class CRUDTemplate
{
    protected $updater;
    protected $creator;
    protected $deletor;
    protected $loader;

    public function __construct(IUpdate $updater, ICreator $creator, IDeletor $delete, ILoader $loader)
    {
          $this->updater = $updater;
          //...snipped...
    }

    // sample template function; others are create, delete, update 
    public function load($id)
    {
          $this->content = $this->loader->load($id);
    }
}

В то время как пример кода показывает только функции шаблона, вызывающие каждую стратегию, болееможет быть сделано в специализированной перегруженной версии шаблона функций, таких как проверка ввода, инициализация и тому подобное.И в конце концов, что-то должно вызывать стратегии.

Плюсы в том, что в приведенном выше примере вы можете использовать разный набор стратегий для разных условий (CRUD здесь может быть не лучшим примером).Поэтому, если вы хотите изменить способ вывода данных, но сохранить способ их сохранения / создания / загрузки, вам просто нужно изменить стратегию вывода.

Минус в том, что вы должны убедиться, что стратегии соответствуют нужному контексту, поскольку нет проверки типов, чтобы убедиться, что стратегии, которые вы передаете, действительны (любая из них будет работать до тех пор, пока она соответствует ожидаемой.базовый класс).О да, шаблон CRUDTemplate тоже может быть производным от базового класса.

Для данных в PHP я считаю, что массив лучше всего работает для передачи сложных параметров.Конечно, вы должны сделать проверку массива

1 голос
/ 17 июля 2010

Шаблонный метод звучит довольно неплохо, но также учитывайте стратегию Когда использовать шаблонный метод Vs. Стратегия

...