2015-04-26 7 views
4

В чем разница между этими двумя шаблонами проектирования? Мне кажется очень похожим на меня, один процессор (слой или фильтр) выполняет некоторую обработку данных и выталкивает/выталкивает данные в другой процессор. Единица n связывается только с n+1 и n-1 единицей, существуют интерфейсы, определяющие функциональные возможности, предлагаемые одним конкретным устройством.Разница между слоями и трубами и фильтрами?

В чем разница?

Редактировать: Возможно, одна разница должна быть потоком данных. В слоях поток может быть top-down, bottom-up и/или связь between несколько слоев внутри. В Трубах и фильтрах поток данных начинается с устройства 1 и переходит в блок n (не обратно).

+0

Я бы сказал, что существует огромная концептуальная разница. (1) Образцы слоев - это скорее создание стека. Например, возьмите типичный JEE, вы начинаете с уровня ресурсов, затем данные, бизнес заканчивается в презентации. (2) Труба и фильтр предназначены для обработки, преобразования и фильтрации данных шаг за шагом. Примером может служить канал сообщений. – Sivaramvt

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

4

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

Если пойти по определению :

Трубы и фильтры модели разделить большую задачу обработки в последовательность меньших независимых шагов обработки (фильтры), которые соединены каналами (трубы).

В слое Layer Pattern каждый слой взаимодействует со смежными слоями и отвечает за некоторую обработку своей собственной, передавая запросы на нижележащий слой и отвечая на запросы от слоя над ним.

Сравнение:

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

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

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

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

Надеюсь, это поможет.

-1

Не существует структурной разницы, только различия в намерениях и метафоре, вызывающие различные картины в уме.

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

Намерение по трубам и фильтрам (метания сантехники), как правило, касается преобразований с аналогичным уровнем абстракции.

Смежные вопросы