Шаблон проектирования PHP, который не является ОО, шаблон PHP лучше всего подходит для этой ситуации - PullRequest
3 голосов
/ 15 ноября 2010

Нам дали программу инвентаризации php. Затем мы должны сказать, улучшит ли шаблон проектирования программу или просто усложнит программу.

Программа структурирована следующим образом.

Программа разбита на php-скрипты, встроенные в html. Либо есть (A) одна целая страница php, выделенная для одной опции, либо (B) логика опции находится внутри другой страницы скрипта, которая служит для других опций подобного действия. (Это исключает простые кнопки, такие как «Сброс» и «Вернуться на главную».)

(A) Например, после открытия веб-сайта появляется меню навигации с параметрами. Когда вы нажимаете опцию, скажем, под Customer, появляется ссылка «View». После щелчка вы попадаете на другую страницу, которая содержит другие ссылки, соответствующие другим параметрам, например «Редактировать» и «Удалить». Обычно для этого сайта каждая опция соответствует своей странице скрипта php. Например, «View» соответствует list_customers.php. «Редактировать» соответствует edit_customer.php.

(B) Другая вещь, которая может произойти, состоит в том, что логика для этой опции находится на «обобщенной» странице скрипта. Под этим я подразумеваю, что несколько вариантов логики сгруппированы на одной странице. Примером этого является «Удалить». Прежде чем можно будет удалить клиента, заказ на работу или предложение, он направляется на страницу сценария php с именем auth.php, чтобы убедиться, что только администратор может удалить. Логика для проверки, является ли администратор входом И для удаления клиента, заказа на работу или предложения, также находится в auth.php. Другим примером является опция «Поиск» для Клиента. Несмотря на то, что у него есть своя страница search_customer.php, логика реального поиска на самом деле находится в list_customers.php. Этот шаблон следует для всех поисков, включая поиск клиентов, для предложений или отчетов о доставке; код поиска фактически находится в соответствующем списке _ *. php page.

Мне трудно найти шаблон дизайна, который не сделает его более сложным. Большинство из тех, что я нахожу, ориентированы на ОО-парадигмы, и этот инвентарь, конечно же, нет. Фабричный шаблон, безусловно, не поможет, поскольку единственный полезный способ, которым я его нашел, - это если логин (имя пользователя и пароль) меняется на что-то вроде (имя пользователя, пароль, идентификатор нет.). Однако я подумал, что это будет бесполезно, поскольку только 2 php-страницы имеют функцию входа в систему.

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

Единственное, что я обнаружил, что может быть полезным - это шаблон дизайна для регулярных выражений. Формы в программе не проверены. У вас есть идеи?

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

Что ты думаешь? Какие-либо шаблоны проектирования, которые могут быть применимы к этой ситуации?

Ответы [ 3 ]

4 голосов
/ 15 ноября 2010

Затем предполагается, что шаблон проектирования улучшит программу или просто усложнит программу.

Шаблоны проектирования - это общие решения общих проблем. Вы не используете Design Patterns для использования Design Patterns. Вы используете их для решения конкретной проблемы. Наиболее известные шаблоны проектирования - это модели GOF и POEAA . Некоторые из них просты в реализации, например, Стратегии, в то время как другие требуют архитектурной мысли.

Некоторые шаблоны проектирования, которые вы используете, даже не зная, например, ваши сценарии действий звучат для меня как TransactionScript . И да, вы можете превратить их в PageController , чтобы уменьшить шаблон кода в сценариях. И вы могли бы добавить FrontController , чтобы уменьшить шаблон в PageControllers тогда. И пока вы занимаетесь этим, почему бы не отделить бизнес-логику и пользовательский интерфейс от MVC?

В целом, Design Patterns сделает ваш код более долговечным, особенно если вы сохраните свои реализации GRASP , SOLID и DRY . Шаблоны проектирования также облегчат понимание и обсуждение вашего кода, поскольку шаблоны - это четко определенные термины. Сообщите разработчику, что этот фрагмент кода является Factory, и он / она поймет вас.

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

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

Для обозначения, шаблоны проектирования не обязательно должны использоваться с ООП. ООП - это просто отличный способ организации кода, и многие шаблоны проектирования действительно предназначены, но не ограничиваются ООП. MVC может использоваться с процедурным кодом. Вы можете использовать стратегию и фабрику с анонимными функциями, FrontController может быть простым оператором switch / case и так далее. Это связано с тем, что шаблоны проектирования являются архитектурными проектами и в основном не зависят от языка и парадигмы.

0 голосов
/ 15 ноября 2010

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

И не пытайтесь применять шаблон дизайна, не понимая его хорошо, конечносмешать в шаблон, просто чтобы назвать его шаблоном.См. Этот вопрос SO на Design Patterns .

0 голосов
/ 15 ноября 2010

ОО это отличный способ идти.Это делает код намного более понятным.Это действительно будущее программирования, а php - отличный язык для ОО.

...