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 с другим способом сохранения.