class NameView
{
public function doOutput(Person $person)
{
if (Person instanceof Employee)
{
echo ‘Hi employee ‘, $person->getName();
}
else
{
Echo ‘Hi person ‘, $person->getName();
}
}
}
По сути тут если мы добавляем еще кучу всего, мы его должны изменять, но согласно открытия закрытия, мы не должны менять его, так как это не та причина для изменения, следовательно архитектура построена не верно, то есть требуется рефакторинг
В результате у нас получается
class NameView
{
public function doOutput(Person $person)
{
echo ‘Hi ‘, $person->getTitle(), ‘ ‘, $person->getName();
}
}
Что правильно, и теперь следуя принципа мы пишем только новый код, и не трогаем текущий, то есть тут уже архитектура верная