Шаблоны проектирования против каркасов - PullRequest
18 голосов
/ 26 ноября 2008

Может кто-нибудь проиллюстрировать, в чем на самом деле разница между этими двумя?

Ответы [ 12 ]

28 голосов
/ 26 ноября 2008

Шаблон проектирования - это концепция или квитанция о том, как решить конкретную проблему.

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

Не имеет смысла объяснять различия, потому что это две совершенно разные вещи.

23 голосов
/ 26 ноября 2008

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

  • шаблон проектирования решает многие проблемы архитектуры программного обеспечения (о создании, поведении, параллелизме и т. Д.) С различным предопределенным дизайном . (дизайн реализация темы архитектуры )

  • платформа основана на Голливудском принципе («Не звоните нам, мы позвоним вам»), где вы реализуете некоторые требования высокого уровня, как указано, и оставьте фреймворк делать остальную часть работы, вызывая ваши реализации.

Ключевым отличием является сплоченность :

  • шаблон дизайна имеет плотный объем :

    • шаблоны проектирования классов (включает занятия)
    • шаблоны бизнес-дизайна (включает бизнес-процессы)
    • шаблоны проектирования приложений (включает приложения)
  • каркас имеет большой область действия :
    Например, .NET - это фреймворк , состоящий из:

    • язык (C #)
    • среда выполнения (CLR)
    • коллекция библиотек
      Просто разработайте то, что вам нужно, и позвольте .Net framework вызывать ваши классы.
13 голосов
/ 26 ноября 2008
|------------------------|
|          (------)      |
|          (ClassA)      |
|          (------)      |
| (-----------)          |
| ((Singleton))          |
| (-----------)          |
|         (---------)    |     
|         ((Factory))    |
|         (---------)    |
|                        |
|                        |
|------------------------|

Legend:
  |---|  Framework
  (---)  Class
  ()     Design Pattern

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

10 голосов
/ 08 января 2009

Вот ответ GOF :

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

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

  • Шаблоны дизайна меньше архитектурные элементы, чем рамки. Типичные рамки содержит несколько шаблонов дизайна, но обратное никогда не бывает правдой.

  • Шаблоны проектирования менее специализированы чем рамки. Каркасы всегда есть конкретное применение домен. Графический редактор каркаса может быть использован на заводе симуляция, но она не ошибется для моделирования модели. В напротив, шаблоны дизайна в этот каталог может быть использован почти любой вид применения. Пока больше специализированные шаблоны дизайна, чем наши конечно возможны (скажем, шаблоны проектирования для распределенных системное или параллельное программирование), даже это не будет диктовать архитектура приложения как рамки будут.

7 голосов
/ 26 ноября 2008

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

4 голосов
/ 13 августа 2016

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

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

Вместе шаблоны проектирования и инфраструктуры помогают улучшить качество программного обеспечения и сократить время разработки.

4 голосов
/ 26 ноября 2008

Из Разработка объектно-ориентированного программного обеспечения с использованием Java от Сяопин Цзя :

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

3 голосов
/ 26 ноября 2008

Шаблон проектирования - это стандартное решение хорошо известной (проектной) проблемы. Например, шаблон «Фабрика» и шаблон «Абстрактная фабрика» предлагают план реализации проектов для решения типичных проблем с созданием объектов.

Платформа, с другой стороны, содержит инфраструктуру, которую вы можете использовать и расширять для разработки собственного решения. Например, модель 2 «каркас веб-приложения» будет содержать инфраструктуру для создания веб-приложений. Он будет содержать контроллер, некоторые элементы графического интерфейса и базовые классы, которые мы можем расширить для создания нашей модели и бизнес-логики. Как правило, он содержит программный код и взаимодействия, которые мы наследуем, когда расширяем их базовые классы. Некоторыми примерами фреймворков являются Struts, JSF, Swing Application Framework, инфраструктура тестирования JUnit и т. Д.

На шаг впереди есть библиотеки, которые мы используем непосредственно из нашего кода. Обычно без продления своих классов. Log4J будет примером библиотеки.

0 голосов
/ 23 октября 2018

На этот вопрос ответили несколькими способами, хотя я думаю, что конкретный пример отсутствует.

Шаблон проектирования : набор правил, составленных для решения повторяющейся проблемы . Правила определяют шаблон. Нет кода, который вы можете скопировать вставить, чтобы реализовать это. Разработчик должен понимать правила и затем применять их.

Пример:

  • Название: Test Driven Development (TDD)
  • Проблема: она гарантирует, что написанные модульные тесты охватывают достаточно сценариев, которые дают вам уверенность в вашем производственном коде.
  • Правила: в нем говорится, что сначала вы должны написать свои тесты, а затем написать свой код после того, как пройдете эти тесты. Это гарантирует, что вы не пишете тесты для прохождения кода, а вместо этого пишете код для прохождения тестов.

Шаблоны проектирования делятся на 3 категории:

  • Шаблоны креативного дизайна:
  • Структурное
  • Поведенческие

Я нашел эту ссылку , чтобы помочь объяснить их.


Framework : Структура, которую не следует путать с библиотеками, - это базовая структура, лежащая в основе системы, которая позволяет разработчикам создавать и развертывать программные приложения стандартным образом.

Пример. Платформа .Net Core - это инструмент, содержащий набор библиотек, который позволяет разработчикам, использующим стек Microsoft, создавать программные приложения, которые могут быть развернуты в различных средах (Windows, Mac OS, Linux)


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

Пример. Библиотека System.Collections.dll позволяет разработчикам .Net использовать такие вещи, как Hashtable .


Стоит также взглянуть на другие ответы, так как иногда это просто модное слово, и оно отличается от одного окружения к другому. Смотрите здесь .

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

0 голосов
/ 02 октября 2017

Шаблон : Набор линий гильдии, архитектура приложения.

Framework : Чтобы следовать определенному шаблону, установите предварительно созданные классы и библиотеки для создания шаблона архитектуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...