@Moshiwa

Как реализовать сохранение данных при помощи паттерна фабричный метод?

Я правильно понимаю, что необходимо создать интерфейс с методом сохранения и несколько классов (сохранение в бд, сохранение в файл), реализующих его?
  • Вопрос задан
  • 258 просмотров
Решения вопроса 1
alvvi
@alvvi
export default apathy;
Laravel тут немного не при чем. Паттерн то можно где угодно применить.

abstract class Presister
{
    abstract public function factoryMethod(): Post;

    public function save(): void
    {
        $post = $this->factoryMethod();
        // сюда логику сохранения
        $post->save();
    }
}

class FancyPostPresister extends Presister
{
    public function factoryMethod(): Post
    {
        return new FancyPost();
    }
}

class RegularPostPresister extends Presister
{
    public function factoryMethod(): Post
    {
        return new RegularPost();
    }
}

interface Post
{
    public function save(): void;
}


Вот так паттерн может выглядеть в контексте сохранения. Главная задача конкретного этого паттерна - не асбрагировать способ сохранение данных, а абстрагировать сам процесс создания объектов со схожими интерфейсами. Впрочем ничто не мешает вам сделать еще один Presister с другим способом сохранения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы