Какие Шаблоны разработки главным образом используются в Сети/Корпоративных приложениях? [закрытый]

Что такое некоторые наиболее распространенные Шаблоны разработки, которые используются в Сети/Корпоративном приложении и почему они используются?

Примечание: Ответьте на то, почему часть должна быть основана на списке проблем, которые они склонны решать?

15
задан skaffman 9 January 2010 в 21:40
поделиться

7 ответов

"Теперь я подозреваю, что это может быть потому, что у нас есть несколько JVM, совместно использующих этот Back Store"

Это может быть абсолютно так! Если два JVM попытаются заблокировать файл одновременно, то это то, что вы увидите.

Точные сведения будут зависеть от типа блокировки, операционной системы и файловой системы.

Возможно, потребуется выполнить перенос операции, вызывающей это, в блок try/catch, а затем повторить операцию в случае сбоя.

-121--2224140-

Если python является вашим первым динамическим языком, вы можете захотеть играть с некоторыми его динамическими аспектами.

Например, используя методы getattr и setattr для объектов, можно написать класс, который обеспечивает свободный способ доступа к элементам из XML-документа. Вместо вызова методов для объекта с такими параметрами, как "xml.getnode (" a ") .getnode (" b ")", можно динамически искать узлы в качестве атрибутов и вместо этого разрешить "xml.a.b". Я думал, что это очень круто из статичных языков.

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

-121--4154957-

Я часто использую инверсию управления .

В частности, при сохранении/загрузке объектов. Это помогает, когда мы не уверены, что данные будут получены из базы данных, веб-службы или какого-либо другого механизма.

Используя интерфейс и позволяя нескольким источникам предоставлять простой API для сохранения/извлечения и позволяя самому объекту знать, какие вызовы API сделать, мы получаем очень простую в управлении архитектуру.

Одним из примеров этого является здесь .

4
ответ дан 1 December 2019 в 04:58
поделиться

Я думаю Фасад и шаблон адаптера широко используются разработчиками, но они не знают, что они на самом деле знают.

1
ответ дан 1 December 2019 в 04:58
поделиться

MVC

Model-View-Controller обеспечивает низкую связность между бизнес логикой и слоем представления, что является его главной ценностью.

Обычно каждый контроллер представляет собой Сервлет , который обрабатывает GET/POST-запросы на одну страницу, отвечая на них правильным представлением или передавая юрисдикцию другому контроллеру.

Viwer превращает данные, передаваемые контроллером, в Html, Xml, JavaScript, JSON или любую другую технологию. Чаще всего это Сервлет или абстракция сервлета, как JSP, ASP и т.д.

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

Благодаря низкой согласованности с MVC можно изменять, разрабатывать и тестировать каждый компонент независимо друг от друга.

ActiveRecord

Эта модель часто используется, когда базовым механизмом хранения является база данных. В основном ActiveRecord означает, что все свойства вашего объекта соответствуют столбцам в базовой базе данных, и что каждый объект включает такие функции, как Insert, Update, Delete (и Load).

Таким образом, каждый класс транслируется в таблицу или представление, и каждый объект становится строкой в упомянутой таблице.

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

Бассейны

Другой часто используемый вариант - это Бассейны . PoolManager - это Singleton, который управляет ресурсом Resource (будь то база данных, заводской метод или соединение). PoolManager хранит набор инициализированных копий. Всякий раз, когда другой процесс или объект запрашивает ресурс через PoolManager.acquisition(), он получает один из объектов из пула.
Затем он манипулирует своей копией ресурса и возвращает ее по окончании работы через Resource.release(). Однако, объект не уничтожается, а просто возвращается в пул.

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

2
ответ дан 1 December 2019 в 04:58
поделиться

Фабричные шаблоны, в основном factory_object и factory_method, очень распространены,
например DocumentFactory для xml-документов.
Цель фабричного паттерна - упростить создание объекта.

0
ответ дан 1 December 2019 в 04:58
поделиться

Контроллер вида модели, используемый для отделения бизнес-логики от уровня представления, чтобы уменьшить ненужное плотное соединение.
Смотрите подробнее на c2.com или википедии

-121--2618113-

Groovy хороший, скриптовый и простой в использовании Java «нокофф» - и я не имею в виду, что уничижительно. в то время как Java - это язык для компиляции, развертывания и (часто) запуска на серверах Enterprise, где важна производительность, Groovy - это язык, на котором можно быстро создать программу, чтобы что-то сделать. Часто то, что что-то довольно просто, так что это часовое или дневное кодирование. Часто код запускается только один раз, а затем выбрасывается. Поскольку Java имеет больше шаблона и формализма в нем, вы можете сделать такого рода программы более быстро и, следовательно, более эффективно в Groovy.

Однако только для того, чтобы дать вам некоторую перспективу, Гроовый - относительный новичок, топчущийся на дерне различных других, лучше зарекомендовавших себя скриптовых языков:

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

  • Python является более свежим, более чистым языком сценариев, чем Perl, и в настоящее время многие предпочитают его как язык сценариев. Это весело программировать в, это делает вещи, и потому что это было вокруг несколько лет, многие люди знают это. Python находится позади/внутри ряда системных утилит Linux.

  • Groovy оставляет Perl и Python в пыли, когда (а) среда уже использует JVM и/или требуется использовать существующий код Java, включая библиотеки. Пока все хорошо. Groovy не пугающе быстр, но быстрее Python. Динамически набирается, это «весело» и «легко» программировать так, что Java нет.

  • Но затем пришел Scala. Скала как Ява на стероидах. Он статически набран так, что это не так «весело» программировать, как Groovy, но у него есть вывод типа так часто вы можете оставить типы и компилятор может разобраться с ними. Scala очень много работает, чтобы максимально использовать типы; она делает универсальные типы намного более прозрачными, чем Java. Он обходится без большого количества шаблонов Java, поэтому программы Scala обычно примерно на 30% короче аналогичных программ Java. Scala работает на JVM и довольно хорошо взаимодействует с кодом Java. Он также работает так же быстро, как и Java, чего большинство других языков не делают.

  • Наконец, в историческом порядке, есть Клоюре. Клоюре является производным Лиспа, поэтому он имеет стиль программирования очень отличается от языков, которые вы бы знали, и он горит через много скобок! Но Clojure работает на JVM, очень совместим со всеми остальными Java, и он динамически набирается. Вы можете использовать его как скриптовый язык или обращаться с ним как с компилируемым языком... ваш решать.Я нахожу интересным программировать в, и тот факт, что это почти чистый функциональный язык заставляет вас думать в новых путях о программировании. Это ранит голову в начале, но если вы выживете, это очень полезное упражнение, потому что вы узнаете некоторые методы, которые станут более актуальными (я думаю) в будущем программировании.

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

-121--4085050-

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

Я склонен использовать его сам с широкой группой объектов, которые я обычно называю «Менеджеры». Например, в большом приложении, требующем нескольких баз данных, вы не хотите постоянно открывать много подключений. У меня будет класс StartManager , который является Singleton, и он будет внутренне управлять подключениями к каждой базе данных. Объект-потребитель может вызвать метод StartManager:: getConnection () , и это задание менеджера, чтобы убедиться, что существует одно соединение (при необходимости его открытие), и вернуть его объекту-потребителю.

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

2
ответ дан 1 December 2019 в 04:58
поделиться

Контроллер просмотра модели, используемый для отделения бизнес-логики от уровня представления для уменьшения ненужной плотной связи.
См. подробнее на c2.com или wikipedia

0
ответ дан 1 December 2019 в 04:58
поделиться

Я не знаю, где запустить, поскольку вы найдете узоры везде (в конечном счете под капотом). Но давайте попробуем:

  • я предполагаю что большинство (все?) использование рамок MVC Фронтальный контроллер и Команда [GoF] узоры.
  • В распределенных приложениях, очень распространено использовать Фасад Сессии (реализованный с Бобами Сессии в Java), который основан Фасад шаблон разработки [GoF].
  • ORMs реализуют Единица работы образец [PoEAA] (Hibernate Сессия , Toplink UnitOfWork, JDO's PersistenceManager в мире Java).
  • Это является все еще очень частым для использования Объект Доступа к данным образец для Уровня доступа к данным. Абстрактная Фабрика [GoF] и Метод фабрики [GoF] связанные узоры.
  • и т.д., и т.д.
0
ответ дан 1 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: