Замена условного оператора полиморфизмом.

Redjik

Джедай-мастер
Собственно сабж, ищю ссылку на пример реализации на php. Понимаю как и где можно удачно использовать полиморфизм,но никак не дойдет как выполняется условность...

Пока что придумал только в зависимости от зароса через __autoload подгружать нужный класс... а еще варианты ? =)
 

whirlwind

TDD infected, paranoid
Так тебе полиморфизм или замена? Замена условного оператора это паттерны стратегия, состояние, фабрика, реестр. Но например фабрика и реестр не обязательно отвечают на запрос полиморфными (взаимозаменяемыми) объектами. Полиморфизм это не только взаимозаменяемость, но и возможность рассмотрения группы (класса) объектов на определенном уровне абстракции. Например, есть набор разнотипных полей формы: строка, число, календарь, набор объектов из бд, етц. Введя интерфейс FormFieldAdapter с методом формирования поля формы и реализовав классы для каждого из типа поля можно рассматривать совокупность любых комбинаций полей как объектов одного класса. Объект формы будет простым контейнером, которому на этапе формирования полной формы редактирования абсолютно все равно, что же конкретно представляет из себя каждое поле в отдельности. Для формы в целом все поля одинаковы, то есть но полиморфны.
 

fixxxer

К.О.
Партнер клуба
Иван Redjik Матвеев, речь о замене полиморфизмом условий ведется не в общем случае, а только в частном. Скорее даже не замена if, а замена switch. Простой пример - полно всякого говнокода, где в index.php портянка switch ($_GET['action']) на 100500 строк. Очевидно, каждое ветвление удобно оформить в виде классов. Начав с этого, и поразмыслив над иерархией и архитектурой, понемногу придешь к Front Controller / Page Controller как в большинстве фреймворков.
 

Redjik

Джедай-мастер
просто прочитал книгу по рефакторингу на отдыхе, из всех методов совсем не понял штук 10-15 (в основном из-за Java) - оставил на будущее... остальные все буду пробовать использовать на практике, но вот именно с заменой условного оператора подзастрял... во время прочтения да и остальное вермя никак в голову не приходил пример, КАК это можно использовать...

fixxxer
спасибо, сейчас дорвался до компа смотрю как в yii и zend сделали
 

Redjik

Джедай-мастер
http://www.ozon.ru/context/detail/id/1308678/

Там правда на Java, но в принципе понял процентов 70 ... хорошая книжка, сейчас писал скриптик, пользовался знаниями ... кпд подросло - порадовало ... меньше ошибок + скорость...
 

shelestov

я тут часто

Lirik

Новичок
Иван Redjik Матвеев
берете количеством, а не качеством?видел таких...жалко что прочитать 1-2 книги по яп!= знать хорошо яп, к тому же со временем все забывается без должной практики, а найти практику на 2-3 яп сразу, это невозможно практически
 

fixxxer

К.О.
Партнер клуба
Паттерны ортогональны конкретному языку программирования. И не вижу сложностей в чтении Java-кода, если хорошо знаешь PHP. Ну разве что generic-и могут быть непонятны, но они вряд ли встретятся в литературе по паттернам.
 

shelestov

я тут часто
Паттерны ортогональны конкретному языку программирования. И не вижу сложностей в чтении Java-кода, если хорошо знаешь PHP. Ну разве что generic-и могут быть непонятны, но они вряд ли встретятся в литературе по паттернам.
Поддерживаю, тем более синтаксис очень схож.
 

HraKK

Мудак
Команда форума
Читать надо Донцову. А думать мозгами. Кесарю.
 

Redjik

Джедай-мастер
Иван Redjik Матвеев
берете количеством, а не качеством?видел таких...жалко что прочитать 1-2 книги по яп!= знать хорошо яп, к тому же со временем все забывается без должной практики, а найти практику на 2-3 яп сразу, это невозможно практически
Я чисто для себя - познакомится с синтаксисом...

Читать надо Донцову. А думать мозгами. Кесарю.
Sic transit gloria mundi... о великий
 
Сверху