Обсуждение примера PHP-кода из книги
Я только учу PHP и читая книгу не могу понять, что автор имел ввиду.
interface PersonWriter
{
public function write(Person $person)
}
class Person
{
public function output(PersonWriter $writer)
{
$writer->write($this);
}
public function getName()
{
return 'Иван';
}
}
Автор пишет: "В данном примере методу output() передается экземпляр объекта типа PersonWriter, методу write() которого передается экземпляр текущего класса. Благодаря такому решению класс Person аккуратно отделяется от реализации средства вывода на экран, которое переносится в клиентский код."
Можете как-то проще объяснить, что автор имел ввиду?
Что меня смущает, так то, что метод write мы же все равно должны реализовать, а не клиентский код? Я правильно понимаю, что должен быть, например, класс, который реализует интерфес PersonWriter в котором будет логика метода write?
Например,
class PersonWriter implements PersonWriter
{
function write(Person $person)
{
echo $person->getName();
}
}
То есть, этот код все равно нужен?