2010-03-10 2 views
8

Singleton, Decorator, Abstract, Factory, и список можно продолжать. Насколько актуальны шаблоны проектирования OO при разработке PHP-приложений для Интернета? Делает ли это что-нибудь для производительности? Или это просто сохранить код для гибких методов разработки? Кто является основным благодетелем для реализации этих шаблонов проектирования? Это клиент или разработчик?Насколько актуальны шаблоны проектирования OO для веб-разработки на PHP?

Я понимаю, что задаю несколько вопросов, но все они относятся к одной теме. Я не уверен, что существует необходимость в шаблонах проектирования OO со сценарием, поскольку он компилируется во время выполнения. Что вы все думаете? Это важно?

ответ

9

Дизайн шаблонов создан для решения конкретных проблем. Эти проблемы возникают, если вы используете PHP или любой другой язык (хотя шаблоны могут отличаться и от языка). Большинство шаблонов имеют корни в объектно-ориентированном дизайне, но могут быть адаптированы к процедурным настройкам. Используйте шаблон дизайна, если у вас возникла проблема с адресом шаблона, будь то PHP или любой другой язык. Не используйте шаблон дизайна только потому, что это «шаблон дизайна» - знать, как и когда он применяется, а когда нет.

Сказав это, большая часть того, что делают шаблоны проектирования, организует код для достижения своей цели чистым, понятным способом. Существуют и другие способы решения проблемы, но шаблон проектирования является хорошо известным, понятным и понятным методом. Если вам необходимо решить проблему, адресованную определенным шаблоном, вам обычно лучше использовать шаблон (или адаптировать шаблон), а не выбирать альтернативу.

Использование шаблонов, в случае необходимости, выгодно как для современных, так и для будущих разработчиков - более чистый, понятный код - и для клиента - меньше времени на создание колеса, более надежный, удобный код. Использование шаблонов, когда они не являются подходящими преимуществами никого; это потенциально упражнение в расстройстве, пытаясь адаптировать шаблон для решения несвязанной проблемы и, скорее всего, просто усложнит ситуацию.

+0

Отличный ответ! есть ли где-нибудь в Интернете, где вы можете найти учебники по обучению распознаванию шаблонов и когда их использовать? Каков наилучший способ узнать их? –

+0

Есть книга парней PHP | Архитекторы по шаблонам проектирования в PHP, которые я нашел полезными, так как объясняет, как каждый из шаблонов работает в контексте языка. Научиться распознавать, что они есть и когда их использовать ... это немного сложнее, это просто практика. –

+0

Книга Gang of Four (http://c2.com/cgi/wiki?DesignPatternsBook) - это хорошее место для начала, но реализации нужно будет перевести на PHP. Формат самих шаблонов говорит вам, какая проблема решает шаблон. Хорошей отправной точкой будет вход в wikipedia: http://en.wikipedia.org/wiki/Design_Patterns – tvanfosson

1

Да, но вы должны выбрать правильные шаблоны для платформы. Самым важным шаблоном проектирования OO является MVC (Model-View-Controller), который использует все основные структуры (CakePHP, CodeIgniter и т. Д.).

+0

Я большой поклонник CakePHP и MVC в целом. Я считаю, что это точно соответствует структуре вашего кода. Но является ли MVC шаблоном проектирования или архитектурой? Или синтаксис модели/архитектуры? –

+0

Можно ли обсуждать, является ли это архитектурным или шаблонным дизайном, но MVC является такой фундаментальной моделью для современной веб-разработки - организовать код, сделать его более модульным, обслуживаемым и т. Д. –

+0

Я согласен, мне нравится использовать MVC , Просто все упрощается. –

1

Использование ООП против не-объектный подход может быть небольшая разница в performance, с не OOP быть немного быстрее, но разница будет практически ничтожна.

Я думаю, что шаблоны проектирования OO были бы полезны для организации кода, но проблемы с дизайном остались за вами. Я думаю, вы выиграли бы больше, чем пользователь. Пользователь может видеть тот же результат, независимо от того, используете ли вы ООП или не-ООП.

+0

Отличное понимание! Я заметил из всего кода, который я рассмотрел в своей жизни, что другие чувствуют то же самое. Некоторым кодам потребуется больше времени для наращивания, чем для написания обновлений, как только вы выяснили, что происходит в нем. –

+2

Лично мне нравится подход ООП. Это экономит много времени, пытаясь изменить весь код, когда я могу внести изменения в несколько мест. –

3

Насколько уместны шаблоны проектирования OO при разработке PHP-приложений для Интернета?

IMO они очень важны для любого нетривиального приложения PHP, если шаблон, который вы используете, применим для данной проблемы.

Это что-то для исполнения?

Не обязательно, и вы можете воспринимать это как в положительном, так и в отрицательном отношении. Самые популярные шаблоны дизайна не собираются напрямую добавлять какие-либо положительные преимущества в производительности, а некоторые, которые налагают больше наследования или структуры классов, могут добавить незначительную стоимость исполнения (я подчеркиваю незначительность).Преимущества использования известных моделей, когда это применимо, перевешивают эти незначительные затраты.

В одном примере я могу придумать, где шаблон будет напрямую улучшать «производительность» (в отношении использования памяти), было бы правильным использованием одноэлементного шаблона. Если вам действительно нужен только один экземпляр объекта в любой момент времени, то вы минимизируете использование памяти с помощью этого экземпляра.

Или это просто сохранить код для гибкой разработки?

Я бы сказал, что правильное использование шаблонов сохраняет код более ремонтопригодным, а не «постным». Это облегчит любой цикл разработки, в том числе гибкий, поскольку код, который использует известные шаблоны, легче читать.

Кто является главным благодетелем для реализации этих шаблонов дизайна? Это клиент или разработчик?

В первую очередь разработчик (особенно если это разработчик (-ы), в котором команда имеет дело, чтобы посмотреть на один и тот же код.) Существует косвенное влияние на клиента в том, что хорошо написанный код, очевидно, будет иметь меньше ошибок, и программное обеспечение, использующее шаблоны, вероятно, будет иметь меньше времени на восстановление от повторного создания колеса.

+0

Я согласен со всеми вашими отзывами. Тогда почему так много маленьких и средних «клиентов» предпочитают использовать менее опытные/недорогие кодеры?Может быть, им просто все равно, как выглядят кишки, пока у него большой двигатель, а краска блестящая, а? –

+1

Я думаю, что от небольших до средних клиентов предпочитают более дешевые кодеры просто потому, что они дешевле. Если вам дадут выбор между дешевым разработчиком, который напишет код спагетти и более дорогой разработчик, который напишет отличный код, многие клиенты, особенно клиенты, которые новичок в разработке контрактов на программное обеспечение, выберут дешевого разработчика. Хороший код трудно оценить. Более опытные SMB будут знать немного о том, что искать, или, по крайней мере, будут смотреть на ваш портфель. – schematic

0

Какие алгоритмы (например, quicksort) относятся к процедурному программированию, шаблоны проектирования предназначены для объектно-ориентированного проектирования. Они являются проверенным способом решения некоторых общих проблем.

Главный бенефициарий - пожиратель, но, как побочный эффект, клиент, вероятно, получит лучший конечный продукт.

Всякий раз, когда они релевантны или нет, зависит от определенных требований приложения и подхода, который вы выбрали. Это может показаться лаконичным, но когда вы начнете анализировать свое приложение и сравниваете его требования к дизайну с существующими шаблонами, вы будете знать, как и когда их использовать.

+0

Лучше, каким образом? Я знаю много клиентов, которые предпочли бы заплатить ученику старшей школы 500 долларов, чтобы вставить свой веб-сайт, а не заплатить инженеру 1500 долларов за создание чего-то впечатляющего. Итак, как мы можем заставить клиентов понять, что они получают что-то «лучшее», нанимая опыт? –

+0

Обычно объектно-ориентированный код более гибкий, чем процедурный, и это может быть «затронуто» конечным пользователем. Конечно, хороший процедурный код может вести себя лучше, чем не очень-то хороший объектно-ориентированный. Когда вы будете знакомы с этими шаблонами, вы станете более продуктивными -> больше времени для кода -> лучший код -> лучший конечный продукт. Но, как вы сказали, все зависит от требований заказчика. – doc