![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Как может выглядеть в процедурном стиле реализация таких паттернов как "Одиночка" и "Фабрика", например? Т.е. паттерны, это прямое следствие развития ООП, соответственно, что здесь и взаимосвязь прямая. За темку, кстати, автору домо-аригато - улыбнуло NLspieler, за сколько ты напишешь, и не просто нага... прости, накодишь, а читаемо напишешь в процедурном стиле гостевую книгу из своего примера? Задача проста, к тому же разбита по частям - это так, однако, закодив ее на фреймворке, ты ощутишь разницу во времени и читаемости/удобства использования кода. Добавлено @ 17:21
Не понимаю, зачем показывать? Об этом уже столько всего написано, нарисовано, сделано, что даже слов не надо. ООП - это из тех вещей, что появляются в процессе эволюции. Это как сравнивать телегу и автомобиль: первую используют крестьяне, у которых недостаточно средств для покупки трактора, а вторую люди живущие в больших городах и работающие на хорошо оплачиваемых работах. Я конечно не хочу сказать, что мы тут все жмущиеся гении, которым жалко поделиться знаниями. Просто я прекрасно понимаю, что лень губительна, а желание, что бы тебе разжевали и положили в ротик - неистребимо. Однако, давайте жить по принципу - ищущий да найдет. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| youri |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
а можно конкретные примеры использования в веб-программировании на ООП?
паттерны не только для ООП существуют ну чтобы стало очевидно, что эту задачу лучше решить с помощью ООП. Но не просто разбить функции по классам, а чтобы было что-то кроме группировки. Т.е. как от процедурного программирования прийти к ООП на данной конкретной задаче, используя принципы ООП и паттерны и так, чтобы увидеть преимущества
что никто уже и не помнит зачем *JOKINGLY* А если серьезно, то хотелось бы на конкретной задаче увидеть преимущества ООП. "Напишите на фреймворке" не катит, потому что не очевидно, что нельзя написать фреймворк без ООП |
||||||
|
|||||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Это сообщение отредактировал(а) nerezus - 3.8.2009, 19:59 |
|||
|
||||
| solenko |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
А можно я сделаю блог с комментами на друпале не написав ни строки кода и скажу что процедурный стиль круче? )
А если серьезно, то на тривиальном примере вы разници не заметите, а готовить пример на n-сот строк вам никто не будет -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
||||
|
|||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
|
|||
|
||||
| NLspieler |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
Написал часов за 10 (знаю что медленно, ведь стаж программирования у меня меньше года) Насчет нага**л или накодил не знаю. Вроде все работает так как я этого хотел. Новые "апгрейды" добавлять довольно легко. Например, если нужно изменить принцип проверки данных, то достаточно отыскать в файле функцию проверки данных и изменить ее.
Везде написано как, но нигде не написано зачем. Но тем не менее, кажется я начинаю понимать, зачем нужен ООП. Например, при разработке игры, в которой существует множество объектов, между которыми есть сложная связь, ООП безусловно нужен. Зачастую же, его применяют там, где он совсем не нужен и только все усложняет |
||||
|
|||||
| nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Админка каментов и постов через скаффолдинг. 2 контроллера, 2 вида, 2 модели. Модель создается ~2 минуты, вид по ~3 минуты некрасивый, контроллеры по 5 минут. Остальное время на раздумья и питье кофе. Это не геста, а блог. Геста в 2 раза быстрее. Вот теперь подумай и сравни затраты.
|
||||
|
|||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Пожалуйста, пример: печать фотографий. Мы печатаем фотографии в разных лабораториях, у всех у них разный формат обмена данными и в этом случае очень помогает паттерн "Фабрика", которая занимается производством объектов с нужным интерфейсом определенной фотолаборатории (в этой задаче используется как минимум 2 паттерна). Не буду спорить на счет истории - не знаю и, в общем-то, не сильно интересно. Пока ребенок сам не встанет на ноги, он не будет знать, что значит - ходить. Впрочем, помочь ему стоит, но объяснять разницу между "ползать" и "ходить" никто объяснять не будет, я думаю. Еще, если быть до конца откровенным - жалко времени и нет опыта, необходимого для грамотного преподнесения материала. Я могу задать встречный вопрос: а вы попробуйте, а потом спрашивайте. Знаете, в процессе изучения и грамотного составления вопроса, по большей части, истина всплывает сама по себе. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| morfus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 30.6.2007 Репутация: 1 Всего: 2 |
Все вы забываете один момент, цель должна оправдывать средства !!!
Если нужна геста (а гесты редко могут похвастаться HighLoad-ом и даже мегабайтными я уж не говорю про гигабайтные БД) то пишется она одной рукой за пол часа, а второй рукой можно вспоминать свою девушку ))) (что удивительно готовых качественных никогда не видел, хотя честно искал, в итоге написал себе сам с базой в файле, с ноября файл БД не привысил и 30кб, модерируется в виндовом блокноте) Если нужен блог то в 99% достаточно взять тот-же WordPress и не париться, нафига писать с нуля то что написано и написано лучше чем вы напишете за 2-3 минуты за которые скачаете и установите готовый. Выбор стиля программирования как и выбор фреймворка и даже просто выбор пива (алкогольное или без) которое вы будете пить в процессе работы, зависит от ожидаемого результата, а не от того что "в классическом случае удобнее" потому что не все случаи классические (хотя да, большинство, но всё равно не все) |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
morfus, блог был примером.
Под часть задач нет готовых продуктов. И именно эту часть и заказывают, как правило. Так что ты не в тему влез. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Да нет вопросов. Если мне надо тулзу написать, которая обойдет хранилище картинок и перегенерит превьюшки, я этот скрипт на PHP никогда в жизни писать не буду, потому, что быстрее и практичнее sh/bash, к примеру. Но, тут скрывается очень большая подоплека: я не буду писать на PHP подобный скрипт, потому, что умею писать на том, который подходит под задачу в конкретном случае гораздо лучше. А те, кто не умеют - будут писать на PHP. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| WIPS |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Странный сабж - "нужен ли ООП в PHP?". Тут был очень прав Маяковский: "Если звезды зажигают - значит - это кому-нибудь нужно...". Ребята из зенда кроплят днем и ночью оттачивая ООП в ZE2- это раз, потом не покладая рук расширяют Zend Framewok - это два. И наконец самое главное - огромное к-во людей пользуется ООП именно в PHP и именно сейчас.
По моему ответ ясен. А если кому-то непонятно или не удобно писать с применением ООП - никто ж не заставляет. Придете к этому сами... или не придете. И поймите меня правильно, если не придете, то это не значит - плохо, просто это не для Вас. А если не для Вас то на кой оно Вам надо --------------------
Автопроизводители, машины, марки, модели! |
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
|
|||
|
||||
| morfus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 30.6.2007 Репутация: 1 Всего: 2 |
По моему он повторяет мой |
|||
|
||||
| youri |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
не обязательно писать код, можно попытаться объяснить на пальцах, а лучше просто сказать: если ты будешь делать то-то и то-то, то тебе понадобиться сделать то-то и то-то, а это удобнее сделать с помощью ООП, потому-то и потому-то дело не в "положили в ротик", меня интересует скорее, что именно дает ООП (в контексте php). А так, я найду. Просто можно было бы обсудить. Сомневаюсь я, что все осознают, зачем оно нужно могу предложить такой вариант (если состояния у объектов нету): для каждой лаборатории создаем набор функций с соответствующим префиксом и одну функцию, которая возвращает префикс, основываясь на каком-то условии; этот префикс используется для вызова нужных функций. Что-то типа
если нужно состояние, то надо сначала вызвать функцию, которая возвращает ассоциативный массив с состоянием
Кстати, интересно, это ООП-подход или процедурный? Если ООП, то как бы тогда это выглядело в процедурном стиле? p.s. имеет смысл рассматривать более стандартные задачи, чтобы не возникало лишних вопросов типа "а есть состояние у объектов, возвращаемых фабрикой?", "какие объекты используются для работы с лабораторией?" и т.д. ООП ведь имеет смысл использовать и для стандартных задач? просто можно понять как чем-то пользоваться и пользоваться. А можно подумать, что эта штука дает, какие есть варианты, сравнить их и сделать выводы. Не знаю, насколько это применимо к фреймворкам, но из количества строк для решения задачи можно сделать вывод только о том, что многое сделано за тебя. То, что все дело в ООП, имхо, не очевидно тоже вариант, конечно. Вспоминается фраза: "Мудрость приходит с возрастом, но бывает так, что возраст приходит один" |
||||||
|
|||||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |