Как понять фабричный метод?

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

Поправьте, если я не так понял, а я расскажу как это в моей голове отложилось...

1. Есть некий класс, одним из методов которого является создание экземпляра объекта, с которым будем работать
abstract class Myclass
{

	public function prepare($type)
	{
		$newclass = $this->create_class($type);
		$newclass->get();
		$newclass->prepare();
		return $newclass->get_result();
	}

	protected function create_class($type)
	{
		//это будет в субклассах
	}
}


А дальше субклассы переопределяют момент создания объекта
class Subclass extends Myclass
{
	protected function create_class($type)
	{
		if ($type===1) return new Class1;
		if ($type===2) return new Class1;
		...
	}
}


Правильно я понял или что-то не совсем так?
  • Вопрос задан
  • 345 просмотров
Пригласить эксперта
Ответы на вопрос 1
@EvgeniiR
https://github.com/EvgeniiR
Постарайтесь понять предназначение и паттернов, заучивать реализации практически бессмысленно. Абстрактная фабрика создает объект определенного типа, а не класс, конечно же.

Фабрика - частный случай реализации инверсии зависимостей. Профит инверсии огромен - она позволяет стабильным модулям не зависеть от нестабильных, например от устройств ввода.

Могу посоветовать Чистую Архитектуру от Дяди Боба в качестве пищи для размышлений
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы