Паттерны проектирования против фреймворков

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

Если подумать об этом 4 года спустя, это действительно был глупый вопрос.

sarego 12.10.2012 19:47

Это глупый вопрос, который явно помогает людям и, следовательно, не глупый вопрос;)

Marc 17.05.2013 11:30

Не думаю, что это глупый вопрос :)

Miroslav Trninic 25.10.2013 00:03

Это, конечно, не глупый вопрос. Фреймворки против библиотек - еще один интересный вопрос.

Olivier Liechti 02.10.2017 18:58

Как новичок в JavaScript, должен ли я изучать шаблоны проектирования или просто использовать такие фреймворки, как React, Angular, Vue и т. д.?

vikramvi 08.08.2019 14:24
Повышение качества Laravel с помощью принципов SOLID: Лучшие практики и примеры
Повышение качества Laravel с помощью принципов SOLID: Лучшие практики и примеры
Когда мы говорим о том, как сделать следующий шаг в качестве разработчика, мы должны понимать, что качество кода всегда является основным фокусом на...
Принципы SOLID - лучшие практики
Принципы SOLID - лучшие практики
SOLID - это аббревиатура, обозначающая пять ключевых принципов проектирования: принцип единой ответственности, принцип "открыто-закрыто", принцип...
20
5
26 845
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

Шаблон проектирования - это концепция или рецепт решения конкретной проблемы.

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

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

Ничего не мог с собой поделать: «Шаблон проектирования - это хитрость для преодоления недостатков в исходном языке. Фреймворк - это код, готовый к использованию ...»

user21037 26.11.2008 14:29

Каркас может содержать / использовать один или несколько шаблонов проектирования (а также архитектурные шаблоны), но шаблон проектирования не может содержать каркас.

user1364368 04.03.2017 20:13

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

|------------------------|
|          (------)      |
|          (ClassA)      |
|          (------)      |
| (-----------)          |
| ((Singleton))          |
| (-----------)          |
|         (---------)    |     
|         ((Factory))    |
|         (---------)    |
|                        |
|                        |
|------------------------|

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

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

Boo за использование подсчета singleton в качестве шаблона проектирования, +1 за красивое объяснение. :-П

user21037 26.11.2008 14:28

Это шаблон дизайна, независимо от того, злоупотребляют ли им злоупотребления или нет. : P Спасибо за голос.

Vinko Vrsalovic 26.11.2008 14:39

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

Although both design patterns and frameworks are mechanisms used to capyure reusable designs, they are quite different. On the one hand, design patterns are schematic descriptions of reusable designs that are not concrete programs and that are language independent. On the other hand, frameworks are compilable programs written in a specific programming language and often contain abstract classes and interfaces. Design patterns are the architectural building blocks of frameworks. They help make frameworks extendable and reusable. Frameworks usually contain implementations of many cooperating design patterns.

Ответ принят как подходящий

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

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

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

Ключевым отличием является согласованность масштабов:

  • шаблон дизайна естьтугойобъем:

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

    • язык (C#)
    • среда выполнения (CLR)
    • сборник библиотек
      Просто разработайте то, что вам нужно, и позвольте платформе .Net вызывать ваши классы.

Шаблон проектирования - это стандартное решение хорошо известной (проектной) проблемы. Например, шаблон Factory и шаблон Abstract Factory предлагают схему реализации проектов для преодоления общих проблем с созданием экземпляров объектов.

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

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

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

Вот ответ GOF:

Because patterns and frameworks have some similarities, people often wonder how or even if they differ. They are different in three major ways:

  • Design patterns are more abstract than frameworks. Frameworks can be embodied in code, but only examples of patterns can be embodied in code. A strength of frameworks is that they can be written down in programming languages and not only studied but executed and reused directly. In contrast, the design patterns in this book have to be implemented each time they're used. Design patterns also explain the intent, trade-offs, and consequences of a design.

  • Design patterns are smaller architectural elements than frameworks. A typical framework contains several design patterns, but the reverse is never true.

  • Design patterns are less specialized than frameworks. Frameworks always have a particular application domain. A graphical editor framework might be used in a factory simulation, but it won't be mistaken for a simulation framework. In contrast, the design patterns in this catalog can be used in nearly any kind of application. While more specialized design patterns than ours are certainly possible (say, design patterns for distributed systems or concurrent programming), even these wouldn't dictate an application architecture like a framework would.

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

шаблон дизайна: решение проблемы высокой частоты. это может быть преобразование исходного кода MSSQL в oracle, ........ и иметь 3 типа: анализировать, проектировать и реализовывать шаблоны.

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

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

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

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

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

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

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

Пример:

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

Паттерны дизайна делятся на 3 категории:

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

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


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

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


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

Пример: библиотека System.Collections.dll позволяет разработчикам .Net использовать такие вещи, как Хеш-таблица.


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

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

Другие вопросы по теме