В интернете по словам что в заголовке можно найти статейки, но у меня немного по другому.
Action, является реализацие паттерна команда, он не знает о Responder. Но может взаимодействовать с Domain. А именно умеет получать Domain, настраивать его и выполнять какие-то действия связаные с ним, через сервисы или напрямую.
Domain - знает только о своих составных частях, содержит репозитории, модельки. Отвечает за логику
Responder - не знает о Action. Но может запрашивать Domain, при этом не может настраивать Domain и выполнять его команды (выполнять работу Action).
Это очень элегантная архитектура, но она очень тяжела для воспроизведения, так как требует дополнительных сил на реализацию сохранения состояния в системе.
Простейшая реализация
class Domain
{
protected $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
class Responder
{
public $domain;
public function getContent()
{
return $this->domain->getName('ivan');
}
}
class Action
{
public $domain;
public function execute()
{
$this->domain->setName('Ivan');
}
}
$domain = new Domain;
$action = new Action;
$action->domain = $domain;
$action->execute();
$responder = new Responder;
$responder->domain = $domain;
echo $responder->getContent();
Основной плюс в отличии от MVC которую используют все популярные php фреймворки в том что контроллер не знает о представлении и вообще не интересуется им, а интересуется только моделью.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации