Тогда мне не понятно, для чего такой "веселый" изначальный код задачи. Полиморфизм подразумевает много сущностей. Поли - много, морфа - форма. Если задача стояла просто не пустить девочку в мужской туалет, вообще достаточно if...else. Если там
, то пример
inpost провалился. По причинам, что я описал выше. Это не полиморфизм, а некое подобие фабрики. Некое. Оно не то, чтобы плохо, но это не решает задачу, как таковую. Незачем тогда было кидаться модными словечками)))
Все дело в том, что у ООПэшников настолько засело под коркой, что первичен объект, что вы даже представить не можете другую парадигму. Где первично действие. Где объектам вообще места нет. И где инструкция new создает не объект, а всего лишь экземпляр класса.
Если конкретнее, я бы решал эту задачу так, вообще без классов boy и girl, тем более child:
class Bathroom_Pee
{
public function __call($name, $arg)
{
return $this->inPants($arg[0]);
}
public function standing($subj)
{
return $subj .': делает это стоя';
}
public function sitting($subj)
{
return $subj .': леди не культурно об этом говорить';
}
public function inPants($subj)
{
return $subj .' в штаны';
}
}
class Bathroom
{
public function allPee($pee)
{
echo $pee .'<br>';
}
}
$throng = array('boy' => 'standing',
'girl' => 'sitting',
);
$room = new Bathroom();
$pee = new Bathroom_Pee();
foreach($throng as $child => $method)
{
$as = $pee->$method($child);
$room->allPee($as);
}
Потому что в императиве нужно бояться не
кто не туда зайдет, а
что он может сделать не так.
В императиве кто, это просто данные. А вот что с ними делать - вопрос другой. Чем лично мне это больше нравится. Свободой. Я могу заставить программу делать все что угодно.
Я могу заставить кота писить в унитаз одним движением. Очень полезная функция))) А тебе для этого нужно сначала эту кошку сделать, обучить её, как Куклачев. Мало того, в твоей реализации это вообще невозможно, так как кошка, это не child и не может в её реализации быть метода "говорить". Как и в абстрактном классе не может быть метода "шевелить хвостом".
Это не стандарты))) Это стереотипы, которые нужно разрушать. Иначе скучно жить, если всю жизнь заглядывать всем в рот. А про кошельки - вопрос спорный. И по времени разработки и уж тем более по последующему обслуживанию.
А представляешь каково мне? Сколько бы я оторвал рук? И ведь я не изобретал велосипед, императив вполне себе живая парадигма. Ан нет, всем требуются программисты со знанием ООП. Ну что сказать, вольному воля. Вернее невольному - неволя))) Если про вас говорить.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.